Deep_Dev
article thumbnail

๋ฌธ์ œ ์„ค๋ช…

๋ฐฐ์—ด arr๊ฐ€ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. ๋ฐฐ์—ด arr์˜ ๊ฐ ์›์†Œ๋Š” ์ˆซ์ž 0๋ถ€ํ„ฐ 9๊นŒ์ง€๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋•Œ, ๋ฐฐ์—ด arr์—์„œ ์—ฐ์†์ ์œผ๋กœ ๋‚˜ํƒ€๋‚˜๋Š” ์ˆซ์ž๋Š” ํ•˜๋‚˜๋งŒ ๋‚จ๊ธฐ๊ณ  ์ „๋ถ€ ์ œ๊ฑฐํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋‹จ, ์ œ๊ฑฐ๋œ ํ›„ ๋‚จ์€ ์ˆ˜๋“ค์„ ๋ฐ˜ํ™˜ํ•  ๋•Œ๋Š” ๋ฐฐ์—ด arr์˜ ์›์†Œ๋“ค์˜ ์ˆœ์„œ๋ฅผ ์œ ์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด,

  • arr = [1, 1, 3, 3, 0, 1, 1] ์ด๋ฉด [1, 3, 0, 1] ์„ return ํ•ฉ๋‹ˆ๋‹ค.
  • arr = [4, 4, 4, 3, 3] ์ด๋ฉด [4, 3] ์„ return ํ•ฉ๋‹ˆ๋‹ค.

 

๋ฐฐ์—ด arr์—์„œ ์—ฐ์†์ ์œผ๋กœ ๋‚˜ํƒ€๋‚˜๋Š” ์ˆซ์ž๋Š” ์ œ๊ฑฐํ•˜๊ณ  ๋‚จ์€ ์ˆ˜๋“ค์„ return ํ•˜๋Š” solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด ์ฃผ์„ธ์š”.

์ œํ•œ์‚ฌํ•ญ
  • ๋ฐฐ์—ด arr์˜ ํฌ๊ธฐ : 1,000,000 ์ดํ•˜์˜ ์ž์—ฐ์ˆ˜
  • ๋ฐฐ์—ด arr์˜ ์›์†Œ์˜ ํฌ๊ธฐ : 0๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ  9๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ •์ˆ˜

 

์ž…์ถœ๋ ฅ ์˜ˆ
[1,1,3,3,0,1,1] [1,3,0,1]
[4,4,4,3,3] [4,3]

 

 

 


๋งจ ์ฒ˜์Œ์— stack์— arr[0]๋ถ€ํ„ฐ ๋ฐ”๋กœ ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ์‹œ์ž‘ํ•ด์„œ peek()์™€ ๊ฐ™์œผ๋ฉด pop()์„ ์“ฐ๋ฉด ๋ ๊นŒํ–ˆ๋”๋‹ˆ ๊ทธ๋Ÿฌ๋ฉด ๊ณ„์† ๊ฐ™์€ ๊ฐ’์˜ ์ถ”๊ฐ€-์‚ญ์ œ๊ฐ€ ๋ฐ˜๋ณต๋˜์–ด์„œ arr[0]๊ฐ’๋งŒ ์šฐ์„  ๋„ฃ๊ณ , index 1๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ peek์™€ ๊ฐ™์„๋•Œ๋งŒ push()ํ•˜๋Š” ๋ฐฉ์‹์ด ๋” ๊ฐ„๋‹จํ–ˆ๋‹ค.

stack์— ์ด์ „ index์™€ ์ค‘๋ณต๊ฐ’๋งŒ ์ œ๊ฑฐํ•ด์„œ ๋„ฃ๊ณ , ์ด๊ฑธ ๋‹ค์‹œ ์ˆœ์„œ๋Œ€๋กœ ๋ฐฐ์—ด answer์— ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ์‹์ด๋‹ค.


 

class Solution {
    public int[] solution(int []arr) {
        Stack<Integer> stack=new Stack<>();
        stack.push(arr[0]);
        for(int i=1; i<arr.length; i++){
            if(arr[i]!=stack.peek())
                stack.push(arr[i]);
        }
        int[] answer=new int[stack.size()];
        for(int i=0; i<stack.size(); i++){
            answer[i]=stack.get(i);
        }
        return answer;
    }
}