๋ฌธ์
์๋ฐ ๊ฐ๋ ์ ๋ฆฌ
- String ๋ฌธ์์ด์์ ์ธ๋ฑ์ค i๊ฐ ๋ฝ์์ค๊ธฐ : `charAt(i)`
- ์คํ ์์ฑ
Stack<Integer> stack = new Stack<>(); // push, pop, peek, empty, search ์ง์
ํ์ด
() ์์ด ์ฌ๋ฐ๋ฅด๊ธฐ ์ํด์๋ ( ์ดํ์ )๊ฐ ๋ฌด์กฐ๊ฑด ์์ผํ๋ค.
๋ฐ๋ผ์ ์คํ์ ์์ฑํ์ฌ ( ์ธ ๊ฒฝ์ฐ์ push๋ฅผ ํ๊ณ )์ธ ๊ฒฝ์ฐ์ pop์ ํ์ ๋ ์ต์ข ์ ์ผ๋ก ์ฌ๋ฐ๋ฅธ ๊ดํธ๋ผ๋ฉด ์คํ์ด ๋น์ด์์ด์ผํ๋ค.
1. Character ํ์ ์ผ๋ก ์คํ์ ์์ฑํ๋ค. (charAt()์ ์ฌ์ฉํ๊ธฐ ์ํด)
2. ์ ๋ ฅ๊ฐ์ charAt์ผ๋ก ์์๋๋ก ์ํํ๊ณ , ( ์ธ ๊ฒฝ์ฐ ์คํ์ push๋ฅผ ํด์ค๋ค.
3. ๋ง์ฝ ) ์ธ ๊ฒฝ์ฐ์๋ ์คํ์ pop ํด์ฃผ๋๋ฐ, ์ด ๋ ์คํ์ด ๋น์ด์๋ ๊ฒฝ์ฐ์ pop์ ํด์ค ์ ์์ผ๋ฉฐ ์ฌ๋ฐ๋ฅด์ง ์์ ๊ดํธ๊ธฐ๋๋ฌธ์ false๋ฅผ ๋ฐํํด์ค๋ค.
4. stack.isEmpty()๋ฅผ ๋ฐํํ๋๋ฐ, isEmpty()๋ ์คํ์ด ๋น์ด์์ ๊ฒฝ์ฐ true, ์๋ ๊ฒฝ์ฐ false๋ฅผ ๋ฐํํ๋ค.
class Solution {
boolean solution(String s) {
Stack<Character> stack = new Stack<>(); // Character๋ก ์คํ ์์ฑ
for (int i=0; i<s.length(); i++){
if (s.charAt(i) == '(') {
stack.push(s.charAt(i));
} else if (s.charAt(i) == ')') {
if (stack.isEmpty()) return false; // ์คํ์ด ๋น์ด์์ ๊ฒฝ์ฐ pop ํ์ง ๋ง๊ณ return false
stack.pop();
}
}
return stack.isEmpty();
}
}