๊ธฐ๋ก๋ฐฉ

Lv.2 : ๋’ค์— ์žˆ๋Š” ํฐ ์ˆ˜ ์ฐพ๊ธฐ ๋ณธ๋ฌธ

CodingTest/Java

Lv.2 : ๋’ค์— ์žˆ๋Š” ํฐ ์ˆ˜ ์ฐพ๊ธฐ

Soom_1n 2023. 11. 23. 13:01

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

 

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

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

programmers.co.kr



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

  • ํ˜„์žฌ ์ธ๋ฑ์Šค์˜ ์ˆ˜๋ณด๋‹ค ๋’ค์—์žˆ๋Š” ์ˆ˜ ์ค‘์—์„œ ํ˜„์žฌ ์ˆ˜๋ณด๋‹ค ํฌ๋ฉด์„œ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์ˆ˜๋ฅผ ์ฐพ๋Š”๋‹ค.
  • ๊ทธ๋Ÿฐ ์ˆ˜๊ฐ€ ์—†๋‹ค๋ฉด -1์„ ์ €์žฅํ•œ๋‹ค.

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

  • ํ˜„์žฌ ์ˆ˜๋ณด๋‹ค ํฐ '๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์ˆ˜'๋Š” ์Šคํƒ์„ ์ด์šฉํ•ด ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.
  • ๋’ค์—์„œ๋ถ€ํ„ฐ ์•ž์œผ๋กœ ์ง„ํ–‰ํ•ด์„œ, ํ˜„์žฌ ์ˆ˜๋ณด๋‹ค ํฐ ๊ฐ’์ด ๋‚˜์˜ฌ ๋•Œ ๊นŒ์ง€ ์Šคํƒ์—์„œ ์ˆ˜๋ฅผ ๋นผ๋‚ธ๋‹ค. ๋งŒ์•ฝ ์—†๋‹ค๋ฉด -1์„ ์ €์žฅํ•˜๊ณ  ํ˜„์žฌ ๊ฐ’์„ ์Šคํƒ์— ๋„ฃ๊ณ  ๋‹ค์Œ์„ ๊ณ„์‚ฐํ•œ๋‹ค.
    • ํ˜„์žฌ ์ˆ˜๋ณด๋‹ค ์ž‘์€ ์ˆ˜๋ฅผ ์Šคํƒ์—์„œ ๋นผ๋„ ๋˜๋Š” ์ด์œ ๋Š” ์–ด์ฐจํ”ผ ํ˜„์žฌ ์ˆ˜๋ฅผ ์Šคํƒ์— ๋„ฃ๊ธฐ ๋•Œ๋ฌธ์—, ์ด ๋‹ค์Œ ๊ณ„์‚ฐ์—์„œ ์ƒ๋žตํ•ด๋„ ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

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

import java.util.Stack;

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

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

        for (int i = numbers.length-1; i >= 0; i--) {
            answer[i] = -1;

            while(!stack.isEmpty()  && stack.peek() <= numbers[i])
                stack.pop();

            if (!stack.isEmpty())
                answer[i] = stack.peek();

            stack.push(numbers[i]);
        }

        return answer;
    }
}

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

  • ์ฃผ์–ด์ง„ ๋ฐฐ์—ด numbers๋ฅผ ๋’ค์—์„œ๋ถ€ํ„ฐ ์•ž์œผ๋กœ ํƒ์ƒ‰ํ•˜๋ฉฐ ๊ณ„์‚ฐํ•œ๋‹ค.
    • ๋’ค์— ์žˆ๋Š” ํฐ ์ˆ˜๊ฐ€ ์—†์„ ์ˆ˜ ๋„ ์žˆ์œผ๋ฏ€๋กœ, answer[i]๋ฅผ -1๋กœ ์ดˆ๊ธฐํ™” ํ•œ๋‹ค.
    • ์Šคํƒ์ด ๋น„๊ฑฐ๋‚˜ ํ˜„์žฌ ๊ฐ’๋ณด๋‹ค ํฐ ์ˆ˜๊ฐ€ ๋‚˜์˜ฌ ๋•Œ ๊นŒ์ง€ ์›์†Œ๋ฅผ ๊บผ๋‚ธ๋‹ค.
    • ๋งŒ์•ฝ ์Šคํƒ์— ์›์†Œ๊ฐ€ ์žˆ๋‹ค๋ฉด, ๊ทธ ์ˆ˜๊ฐ€ ํ˜„์žฌ ์ˆ˜๋ณด๋‹ค ํฐ ๋’ค์—์žˆ๋Š” ์ˆ˜ ์ด๋ฏ€๋กœ answer[i]์— ์ €์žฅํ•œ๋‹ค.
    • ํ˜„์žฌ ์ˆ˜๋ฅผ ์Šคํƒ์— ๋„ฃ๊ณ  ๋‹ค์Œ ๊ณ„์‚ฐ์„ ์ง„ํ–‰ํ•œ๋‹ค.

๐Ÿ”ธ end ๐Ÿ”ธ

  • ์ฒ˜์Œ์—” 2์ค‘ ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ๊ตฌํ˜„ํ•ด์„œ, ๋‹ค์Œ ์ˆ˜๋ฅผ ์ง์ ‘ ์„ ํ˜•์ ์œผ๋กœ ํƒ์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ผ๋Š”๋ฐ, ํ…Œ์ŠคํŠธ ํ›„๋ฐ˜ ๋ถ€๋ถ„์—์„œ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋‚ฌ๋‹ค.
  • dp์ธ๊ฐ€ ํ–ˆ์ง€๋งŒ ์ง์ „์— ํ’€์ดํ•œ ๋ฌธ์ œ์˜ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค ํ’€์ด์—์„œ ์ด ๋ฌธ์ œ๊ฐ€ ์–ธ๊ธ‰๋˜์–ด์„œ ์Šคํƒ์„ ์ ์šฉํ•ด๋ณด๊ณ ์ž ํ–ˆ๊ณ , ์‰ฝ๊ฒŒ ํ’€์ด๋˜์—ˆ๋‹ค. ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์•Œ๋งž๊ฒŒ ์„ ํƒํ•˜๋Š”๊ฒŒ ์–ผ๋งˆ๋‚˜ ์ค‘์š”ํ•œ์ง€ ์•Œ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

728x90