๐Ÿ—๏ธ Algorithm/โฌ› ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

โฌ› [Programmers] [Java] [Level2] ์ง์ง€์–ด ์ œ๊ฑฐํ•˜๊ธฐ

Dbswnstjd 2024. 1. 7. 00:01

๋ฌธ์ œ

https://school.programmers.co.kr/learn/courses/30/lessons/12973?language=java

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

ํ’€์ด

import java.util.*;

class Solution
{
    public int solution(String s)
    {
        int answer = -1;
        char[] cArr = s.toCharArray();
        Stack<Character> stack = new Stack<>();

        for(int i=0; i<cArr.length; i++){
            char c = cArr[i];
            if(stack.isEmpty()){
                stack.push(c);
            }else{
                if(stack.peek() == c){
                    stack.pop();
                }else{
                    stack.push(c);
                }
            }
        }

        return stack.isEmpty() ? 1 : 0;
    }
}

Stack์— ๋Œ€ํ•œ ๋ฌธ์ œ์ด๋‹ค. Stack ์ž๋ฃŒ๊ตฌ์กฐ๋Š” ๋งค์šฐ ์ค‘์š”ํ•˜๊ณ  ์ฝ”๋”ฉํ…Œ์ŠคํŠธ์—์„œ๋„ ๋งŽ์ด ๋‚˜์˜ค๊ธฐ ๋•Œ๋ฌธ์— ์ž˜ ์•Œ์•„๋‘ฌ์•ผํ•œ๋‹ค. 

์ž๋ฐ”๋กœ ์ฝ”ํ…Œ๋ฅผ ์ค€๋น„ํ•˜๋ฉด์„œ ์ฒ˜์Œ์— ์ œ์ผ ํ—ท๊ฐˆ๋ฆฌ๋Š” ๊ฒƒ์ด toXXX์ธ ๊ฒƒ ๊ฐ™๋‹ค. ํŒŒ์ด์ฌ์—์„œ๋Š” ํ˜•๋ณ€ํ™˜์ด ์‚ฌ์‹ค ํฐ ์–ด๋ ค์›€์ด ์—†์—ˆ์œผ๋‚˜ ์ž๋ฐ”์—์„œ๋Š” ์ž๋ฃŒํ˜•์ด ๋งค์šฐ ์ค‘์š”ํ•˜๋‹ค. ์ด๋Ÿฐ ๋ถ€๋ถ„๋“ค์ด ์ฒ˜์Œ์—๋Š” ์–ด๋ ต์ง€๋งŒ ๊ฐœ๋ฐœ์„ ํ•˜๋‹ค๋ณด๋ฉด ์ž๋ฃŒํ˜•์„ ์—„๊ฒฉํ•˜๊ฒŒ ์ค€์ˆ˜ํ•˜๋Š” ๊ฒƒ์ด ๋” ์ข‹์€ ๊ฒƒ ๊ฐ™๋‹ค.

 

๋ฌธ์ œ ํ’€์ด๋ฅผ ํ•˜์ž๋ฉด

1. ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋“ค์–ด์˜จ S๋ฅผ charํ˜• ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜

2. ์Šคํƒ์„ ์ด์šฉํ•˜๊ธฐ ์œ„ํ•ด ์Šคํƒ ์„ ์–ธ

3. S๋ฅผ ์™„์ „ํƒ์ƒ‰ ํ•˜๋„๋ก for๋ฃจํ”„

4. char ํ˜• ๋ณ€์ˆ˜์— charํ˜• ๋ฐฐ์—ด์˜ ๊ฐ’๋“ค์„ ํ•˜๋‚˜์”ฉ ๋„ฃ์–ด์ค€๋‹ค.

5. stack ์ด ๋น„์–ด์žˆ๋‹ค๋ฉด

5-1. ์ฒ˜์Œ ๊ฐ’์ด ๋“ค์–ด์˜ค๊ฑฐ๋‚˜ ํ˜„์žฌ์˜ ๋ฌธ์ž๋Š” ๋ฐ˜๋ณต๋  ์ผ์ด ์—†์œผ๋ฏ€๋กœ stack์— push ํ•ด์ค€๋‹ค.

6. stack์ด ๋น„์–ด์žˆ์ง€ ์•Š๋‹ค๋ฉด

6-1. stack์˜ top์„ ํ™•์ธ(๋‹จ์ˆœ ํ™•์ธ์ด๋ฏ€๋กœ ์‚ฝ์ž…์ด๋‚˜ ์‚ญ์ œ๊ฐ€ ์•„๋‹˜)ํ•˜๊ณ  ํ˜„์žฌ์˜ ๋ฌธ์ž์™€ top์ด ๊ฐ™๋‹ค๋ฉด stack์—์„œ popํ•ด์ค€๋‹ค. ์ด๋ ‡๊ฒŒ ๋˜๋ฉด top์˜ ๋ฌธ์ž์—ด์„ ์—†์•ฐ๊ณผ ๋™์‹œ์— ๋ฐ˜๋ณต๋˜๋Š” ๋ฌธ์ž์—ด์„ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋‹ค. 

6-2. top๊ณผ ๋‹ค๋ฅด๋‹ค๋ฉด stack์— ๋ฌธ์ž์—ด์„ ๋„ฃ์–ด์ค€๋‹ค. 

 

๊ทธ๋ ‡๊ฒŒ ๋˜์–ด ์ตœ์ข…์ ์œผ๋กœ ๋‚จ์•„์žˆ๋Š” ๊ฐ’๋“ค์€ ๋ฐ˜๋ณต๋˜์ง€ ์•Š๋Š” ๊ฐ’์ด๊ณ  stack์ด ๋น„์–ด์žˆ๋‹ค๋ฉด 1์„ ๋ฐ˜ํ™˜, ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด 0์„ ๋ฐ˜ํ™˜ํ•ด์ฃผ๋„๋ก ํ•œ๋‹ค.