๊ธฐ๋ก๋ฐฉ

Lv.2 : ์ฃผ์‹๊ฐ€๊ฒฉ ๋ณธ๋ฌธ

CodingTest/Java

Lv.2 : ์ฃผ์‹๊ฐ€๊ฒฉ

Soom_1n 2023. 11. 23. 09:34

๐Ÿ‘‰ ๋ฌธ์ œ๋งํฌ

 

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

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

programmers.co.kr



๐Ÿ”ธ ๋ฌธ์ œ ๋ถ„์„ ๐Ÿ”ธ

  • ์ž…๋ ฅ ๋œ ๊ฐ€๊ฒฉ ๋ฐฐ์—ด์—์„œ ๊ฐ ์ธ๋ฑ์Šค์˜ ๊ฐ€๊ฒฉ์ด ๋ช‡ ์ดˆ๋™์•ˆ ๋–จ์–ด์ง€์ง€ ์•Š์•˜๋Š”์ง€ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

๐Ÿ”ธ ๋ฌธ์ œ ํ’€์ด ๐Ÿ”ธ

  • ์Šคํƒ์— ๊ฐ ๊ฐ€๊ฒฉ ๋ณ„ ์ธ๋ฑ์Šค๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ์ €์žฅํ•œ๋‹ค.
  • ํ˜„์žฌ ์Šคํƒ์— ์ €์žฅ ๋œ ์ธ๋ฑ์Šค์˜ ๊ฐ€๊ฒฉ์ด ํ˜„์žฌ ์ธ๋ฑ์Šค ๊ฐ€๊ฒฉ๋ณด๋‹ค ํฌ๋‹ค๋ฉด ๊ฐ€๊ฒฉ์ด ๋–จ์–ด์ง„ ๊ฒƒ์ด๋ฏ€๋กœ, ์Šคํƒ์—์„œ ์ธ๋ฑ์Šค๋ฅผ ๊บผ๋‚ด๊ณ  ์ง€๋‚˜๊ฐ„ ์ดˆ๋ฅผ ์ €์žฅํ•œ๋‹ค.

๐Ÿ”ธ ์ฝ”๋“œ ๐Ÿ”ธ

import java.util.Stack;

class Solution {
    public int[] solution(int[] prices) {
        int[] answer = new int[prices.length];

        Stack<Integer> stack = new Stack<>();

        for (int i = 0; i < prices.length; i++) {

            while (!stack.isEmpty() && prices[stack.peek()] > prices[i])
                answer[stack.peek()] = i - stack.pop();

            stack.push(i);
        }

        while (!stack.isEmpty())
            answer[stack.peek()] = prices.length - 1 - stack.pop();

        return answer;
    }
}

๐Ÿ”ธ ์ฝ”๋“œ ํ•ด์„ ๐Ÿ”ธ

  • ์ฃผ์–ด์ง„ ์ฃผ์‹ ๊ฐ€๊ฒฉ ๋ฐฐ์—ด prices์˜ ์›์†Œ๋ฅผ ํ•˜๋‚˜์”ฉ ํ™•์ธํ•˜๋ฉฐ ๊ณ„์‚ฐํ•œ๋‹ค.
    • ์Šคํƒ์˜ ์ธ๋ฑ์Šค ๊ฐ’๋ณด๋‹ค ํ˜„์žฌ ์ธ๋ฑ์Šค์˜ ๊ฐ’์ด ๋” ์ž‘๋‹ค๋ฉด, ์Šคํƒ์˜ ์ธ๋ฑ์Šค๋ฅผ ๊บผ๋‚ด ๊ฒฝ๊ณผ๋œ ์‹œ๊ฐ„์„ ์ •๋‹ต ๋ฐฐ์—ด answer์— ์ €์žฅํ•œ๋‹ค.
    • ํ˜„์žฌ ์ธ๋ฑ์Šค๋ฅผ ์Šคํƒ์— ์ €์žฅํ•œ๋‹ค.
  • ๋ชจ๋“  ๋ฐ˜๋ณต์ด ๋๋‚ฌ์œผ๋ฉด, ์Šคํƒ์— ๋‚จ์€ ๊ฐ’๋“ค์„ ์ •๋ฆฌํ•ด์ค€๋‹ค.
    • ํ˜„์žฌ ์‹œ๊ฐ„์„ prices์˜ ๊ธธ์ด๋กœ ๊ณ„์‚ฐํ•ด์„œ ๊ฒฝ๊ณผ๋œ ์‹œ๊ฐ„์„ ์ €์žฅํ•œ๋‹ค.
  • answer์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

๐Ÿ”ธ end ๐Ÿ”ธ

  • ๊ฐ„๋‹จํ•œ ์Šคํƒ๋ฌธ์ œ์˜€๋‹ค. ๊ฐ’์„ ์ €์žฅํ• ๊นŒ ์ธ๋ฑ์Šค๋ฅผ ์ €์žฅํ• ๊นŒ ์ •๋„๋งŒ ๊ณ ๋ฏผ์ด ๋๋˜ ๊ฒƒ ๊ฐ™๋‹ค.

728x90