์นดํ…Œ๊ณ ๋ฆฌ ์—†์Œ

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค / ์ž๋ฐ” / Lv.2] 12909 ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ

HHRR 2024. 7. 10. 22:47
๋ฌธ์ œ

 

์ž๋ฐ” ๊ฐœ๋… ์ •๋ฆฌ
  • 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();
        }
    }