๐Ÿค–/์•Œ๊ณ ๋ฆฌ์ฆ˜ ์žฌํ™œ์šด๋™

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค/Java] ์ง•๊ฒ€๋‹ค๋ฆฌ ๊ฑด๋„ˆ๊ธฐ

sssbin 2025. 5. 2. 18:00

 

https://school.programmers.co.kr/learn/courses/30/lessons/64062

 

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

SW๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ‰๊ฐ€, ๊ต์œก, ์ฑ„์šฉ๊นŒ์ง€ Total Solution์„ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์„ฑ์žฅ์„ ์œ„ํ•œ ๋ฒ ์ด์Šค์บ ํ”„

programmers.co.kr

 

for๋ฌธ(์‹œ๊ฐ„ ์ดˆ๊ณผ), ์Šฌ๋ผ์ด๋”ฉ ์œˆ๋„์šฐ(์‹œ๊ฐ„ ์ดˆ๊ณผ)

์นด์นด์˜ค ๊ณต์‹ ํ•ด์„ค์€ ์ด๋ถ„ ํƒ์ƒ‰์„ ์ด์šฉํ•˜๋ผ๊ณ  ์ ํ˜€ ์žˆ์—ˆ์ง€๋งŒ, ํ•˜๊ธฐ ์‹ซ์—ˆ๋‹ค. (..)

์งˆ๋ฌธ ๊ฒŒ์‹œํŒ์„ ๋ณด๋‹ˆ, leetcode์˜ Sliding Window Maximum ๋ฌธ์ œ์™€ ์œ ์‚ฌํ•˜๊ฒŒ ํ’€๋ฉด ๋œ๋‹ค๊ณ  ํ•œ๋‹ค.

 

import java.util.*;

class Solution {
    public int solution(int[] stones, int k) {
        Deque<int[]> deque = new ArrayDeque<>();
        int size = stones.length;
        int answer = Integer.MAX_VALUE;
        
        for (int i=0; i<k; i++) {
            while (!deque.isEmpty() && deque.getLast()[1] < stones[i]) {
                deque.removeLast();
            }
            
            deque.add(new int[]{i, stones[i]});
        }
        
        answer = Math.min(answer, deque.getFirst()[1]);
        
        for (int i=k; i<size; i++) {
            if (!deque.isEmpty() && deque.getFirst()[0] == i-k) {
                deque.removeFirst();
            }
            
            while (!deque.isEmpty() && deque.getLast()[1] < stones[i]) {
                deque.removeLast();
            }
            
            deque.add(new int[]{i, stones[i]});
            
            answer = Integer.min(answer, deque.getFirst()[1]);
        }
        
        return answer;
    }
}

 

Deque๋ฅผ ์ด์šฉํ–ˆ๋‹ค. (์›์†Œ๋ฅผ ์•ž๋’ค๋กœ ๋„ฃ๊ณ  ๋บ„ ์ˆ˜ ์žˆ๋‹ค.)

 

์•ž์—์„œ๋ถ€ํ„ฐ k๊ฐœ๋Š”

1. ์ƒˆ๋กœ ๋“ค์–ด์˜ค๋Š” ์›์†Œ๋ณด๋‹ค ์ž‘์€ ๊ฒƒ๋“ค์„ ๋’ค์—์„œ๋ถ€ํ„ฐ ๋นผ์ค€๋‹ค.

(์ƒˆ๋กœ ๋“ค์–ด์˜ค๋Š” ๊ฐ’๋ณด๋‹ค ์ž‘์€ ๊ฐ’๋“ค์€ ์ตœ๋Œ“๊ฐ’์ด ๋  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.)

2. ์ƒˆ๋กœ ๋“ค์–ด์˜ค๋Š” ์›์†Œ๋ฅผ ๋„ฃ์–ด์ค€๋‹ค.

3. 1-2๋ฅผ k๋ฒˆ ๋ฐ˜๋ณต ํ›„, Deque์˜ ๊ฐ€์žฅ ์ฒซ ๋ฒˆ์งธ ์›์†Œ์™€ ์ •๋‹ต ๋น„๊ต.

(๊ฐ€์žฅ ์ฒซ ๋ฒˆ์งธ ์›์†Œ๊ฐ€ ์ตœ๋Œ“๊ฐ’์ด ๋œ๋‹ค.)

 

์ดํ›„ ๋‚˜๋จธ์ง€ ์›์†Œ๋“ค์— ๋Œ€ํ•ด

1. Deque์˜ ๋งจ ์•ž ์›์†Œ์˜ ์ธ๋ฑ์Šค๊ฐ€ ํ˜„์žฌ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚˜๋ฉด ์ง€์šด๋‹ค.

2. ์ƒˆ๋กœ ๋“ค์–ด์˜ค๋Š” ์›์†Œ๋ณด๋‹ค ์ž‘์€ ๊ฒƒ๋“ค์„ ๋’ค์—์„œ๋ถ€ํ„ฐ ๋นผ์ค€๋‹ค.

3. ์ƒˆ๋กœ ๋“ค์–ด์˜ค๋Š” ์›์†Œ๋ฅผ ๋„ฃ์–ด์ค€๋‹ค.

4. Deque์˜ ๊ฐ€์žฅ ์ฒซ ๋ฒˆ์งธ ์›์†Œ์™€ ์ •๋‹ต ๋น„๊ต.

5. 1-4๋ฅผ ์›์†Œ์˜ ์ˆ˜๋งŒํผ ๋ฐ˜๋ณต.