05-15 20:52
Recent Posts
Recent Comments
๊ด€๋ฆฌ ๋ฉ”๋‰ด

miinsun

[Programmers] ์Šคํƒ/ํ : ์ฃผ์‹๊ฐ€๊ฒฉ JAVA ๋ณธ๋ฌธ

Algorithm/Programmers

[Programmers] ์Šคํƒ/ํ : ์ฃผ์‹๊ฐ€๊ฒฉ JAVA

miinsun 2022. 7. 5. 00:06

๐Ÿ’ฌ ๋ฌธ์ œ ์„ค๋ช…

์ดˆ ๋‹จ์œ„๋กœ ๊ธฐ๋ก๋œ ์ฃผ์‹ ๊ฐ€๊ฒฉ์ด ๋‹ด๊ธด ๋ฐฐ์—ด prices๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ,
๊ฐ€๊ฒฉ์ด ๋–จ์–ด์ง€์ง€ ์•Š์€ ๊ธฐ๊ฐ„์€ ๋ช‡ ์ดˆ์ธ์ง€๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•˜์„ธ์š”.

 

๐Ÿšซ ์ œํ•œ ์‚ฌํ•ญ

  • prices์˜ ๊ฐ ๊ฐ€๊ฒฉ์€ 1 ์ด์ƒ 10,000 ์ดํ•˜์ธ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.
  • prices์˜ ๊ธธ์ด๋Š” 2 ์ด์ƒ 100,000 ์ดํ•˜์ž…๋‹ˆ๋‹ค.

 

๐Ÿ”จ ์ž…์ถœ๋ ฅ ์˜ˆ

  1. ์ž…์ถœ๋ ฅ ์˜ˆ
    • 1์ดˆ ์‹œ์ ์˜ โ‚ฉ1์€ ๋๊นŒ์ง€ ๊ฐ€๊ฒฉ์ด ๋–จ์–ด์ง€์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
    • 2์ดˆ ์‹œ์ ์˜ โ‚ฉ2์€ ๋๊นŒ์ง€ ๊ฐ€๊ฒฉ์ด ๋–จ์–ด์ง€์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
    • 3์ดˆ ์‹œ์ ์˜ โ‚ฉ3์€ 1์ดˆ๋’ค์— ๊ฐ€๊ฒฉ์ด ๋–จ์–ด์ง‘๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ 1์ดˆ๊ฐ„ ๊ฐ€๊ฒฉ์ด ๋–จ์–ด์ง€์ง€ ์•Š์€ ๊ฒƒ์œผ๋กœ ๋ด…๋‹ˆ๋‹ค.
    • 4์ดˆ ์‹œ์ ์˜ โ‚ฉ2์€ 1์ดˆ๊ฐ„ ๊ฐ€๊ฒฉ์ด ๋–จ์–ด์ง€์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
    • 5์ดˆ ์‹œ์ ์˜ โ‚ฉ3์€ 0์ดˆ๊ฐ„ ๊ฐ€๊ฒฉ์ด ๋–จ์–ด์ง€์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

โ€‹

๐Ÿ’ป Solution.java

  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์—์„œ ์Šคํƒ/ํ ๋ฌธ์ œ๋กœ ๋ถ„๋ฅ˜๋˜์ง€๋งŒ, ์Šคํƒ์„ ์–ด๋–ป๊ฒŒ ํ™œ์šฉํ•ด์•ผํ• ์ง€ ๊ฐ์ด ์žกํžˆ์ง€ ์•Š์•„ ์ƒ๊ฐ ๋‚˜๋Š”๋Œ€๋กœ ์ด์ค‘ ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ๊ตฌํ˜„ํ•ด๋ดค๋‹ค.
  • ์ฒซ๋ฒˆ์งธ ๋ฐ˜๋ณต๋ฌธ์€ ๊ธฐ์ค€ ์‹œ์ ์ด ๋˜๋Š” i์˜ ๊ฐ’์ด๊ณ  ๋‘๋ฒˆ์งธ ๋ฐ˜๋ณต๋ฌธ์€ i + 1์ดˆ๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰๊นŒ์ง€์˜ ์ดˆ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค
  • ์ง„ํ–‰ ์‹œ๊ฐ„์€ ๋งค์ดˆ 1 ์ดˆ์”ฉ ์ฆ๊ฐ€ํ•˜๋ฉฐ, i์ดˆ๋ณด๋‹ค ์ž‘์€ ๊ฐ’์ด ๋‚˜ํƒ€๋‚˜๋ฉด ๋ฐ˜๋ณต๋ฌธ์„ ์ค‘๋‹จํ•ด์ค€๋‹ค.
class Solution {
    public int[] solution(int[] prices) {
        int[] answer = new int [prices.length];
        
        // i์ดˆ์˜ ์‹œ์ ์„ ๊ธฐ์ค€์œผ๋กœ ์ง„ํ–‰
        for(int i = 0; i < prices.length; i++){
            // i์ดˆ ์ดํ›„๋กœ ๊ฒ€์‚ฌ๋ฅผ ์ง„ํ–‰
            for(int j = i + 1; j < prices.length; j++){
                answer[i]++;

                if(prices[i] > prices[j]){   // i์ดˆ๋ณด๋‹ค ์ž‘์€ ๊ฐ’์ด ์žˆ๋‹ค๋ฉด ๋ฐ˜๋ณต๋ฌธ ์ค‘๋‹จ
                    break;    
                }
            }
        }
        
        return answer;
    }
}

 

 

๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ํ’€์ด ์ฐธ๊ณ ๋ฅผ ํ•ด๋ณด๋‹ˆ

์Šคํƒ์„ ์ด์šฉํ•ด์„œ ํ’€ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์—ˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ ๋ณด๋ฉด ๋กœ์ง์€ ๋‚˜์˜ ํ’€์ด์™€ ๋น„์Šทํ•œ๋ฐ, ๊ตณ์ด ์Šคํƒ์„ ์“ฐ์ง€ ์•Š์•„๋„ ๋‚ด๊ฐ€ ํ’€์ดํ•œ ๋ฐฉ์‹์œผ๋กœ๋„ ๋ฌธ์ œ๋ฅผ ํ‘ธ๋Š” ๋ฐฉ๋ฒ•์ด ๊ดœ์ฐฎ์€ ๊ฒƒ ๊ฐ™๋‹ค.

import java.util.Stack;

class Solution {
    public int[] solution(int[] prices) {
        Stack<Integer> beginIdxs = new Stack<>();
        int i=0;
        int[] terms = new int[prices.length];

        beginIdxs.push(i);
        for (i=1; i<prices.length; i++) {
            while (!beginIdxs.empty() && prices[i] < prices[beginIdxs.peek()]) {
                int beginIdx = beginIdxs.pop();
                terms[beginIdx] = i - beginIdx;
            }
            beginIdxs.push(i);
        }
        while (!beginIdxs.empty()) {
            int beginIdx = beginIdxs.pop();
            terms[beginIdx] = i - beginIdx - 1;
        }

        return terms;
    }
}
Comments