๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Coding Test/Algorithms

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์ฃผ์‹๊ฐ€๊ฒฉ/Java - Lv.2

by The Future Engineer, Lucy 2024. 9. 29.

โ“๋ฌธ์ œ

 

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

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

programmers.co.kr

๐Ÿ“Œ์œ ํ˜•

์Šคํƒ ๋˜๋Š” ํ ๋˜๋Š” ๋‹จ์ˆœ ๋ฐ˜๋ณต๋ฌธ

โœ๐Ÿปํ’€์ด

ํ˜„์žฌ ์ฃผ์‹๊ฐ€๊ฒฉ์ด ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด์„œ ๋ฐ”๋€ ๊ฐ€๊ฒฉ์ด ํ˜„์žฌ ๊ฐ€๊ฒฉ๊ณผ ๊ฐ™๊ฑฐ๋‚˜ ํฌ๋‹ค๋ฉด ์‹œ๊ฐ„์„ ๊ณ„์† 1์”ฉ ์ฆ๊ฐ€.
ํ˜„์žฌ ๊ฐ€๊ฒฉ๋ณด๋‹ค ์ž‘์•„์ง„๋‹ค๋ฉด ๋ฐ˜๋ณต๋ฌธ์„ ๋ฉˆ์ถค.

๐Ÿ’ป์ฝ”๋“œ

/** ๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•œ ํ’€์ด**/
import java.util.*;

class Solution {
    public int[] solution(int[] prices) {
        int[] answer = new int[prices.length];
        
        for(int i = 0; i < prices.length; i++)
            for(int j = i + 1; j < prices.length; j++){
                answer[i]++;
                if(prices[i] > prices[j])
                    break;
            }
        
        return answer;
    }
}
/** ํ๋ฅผ ์‚ฌ์šฉํ•œ ํ’€์ด**/
import java.util.*;

class Solution {
    public int[] solution(int[] prices) {
        int[] answer = new int[prices.length];
        
        Queue<Integer> q = new LinkedList<>();
        
        for(int i : prices)
            q.offer(i);
        
        int i = 0;
        while(!q.isEmpty()){
            int current = q.poll();
            
            for(int x : q){
                answer[i]++;
                if(current > x) break;
            }
            
            i++;
        }
        
        return answer;
    }
}

๐Ÿ’ก์ƒˆ๋กœ ๋ฐฐ์šด ๋‚ด์šฉ

**Queue**
- Queue๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋กœ FIFO ์ž๋ฃŒ๊ตฌ์กฐ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์ •์˜.
- LinkedList ๊ฐ์ฒด๋ฅผ Queue ์ธํ„ฐํŽ˜์ด์Šค ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์‚ฌ์šฉ ๊ฐ€๋Šฅ.
**์„ ์–ธ**
- Queue<์ž๋ฃŒํ˜•> q = new LinkedList<>(); ์ž๋ฃŒํ˜•์„ ๋„ฃ์€ ๊ฒฝ์šฐ ํ•ด๋‹น ์ž๋ฃŒํ˜•๋งŒ ์‚ฝ์ž…, ์‚ญ์ œ ๊ฐ€๋Šฅ.
- Queue ๋ณ€์ˆ˜๋ช… = new LinkedList(); ์–ด๋–ค ์ž๋ฃŒํ˜•์ด๋“  ์‚ฝ์ž…, ์‚ญ์ œ ๊ฐ€๋Šฅ. (์˜ˆ๋ฅผ ๋“ค์–ด, intํ˜•์„ ๋„ฃ์—ˆ๋‹ค๊ฐ€ Stringํ˜•์„ ์‚ฝ์ž… ๊ฐ€๋Šฅ.)
**์‚ฝ์ž…**
- q.add(value); ์‚ฝ์ž… ์„ฑ๊ณต ์‹œ true ์‹คํŒจ ์‹œ ์˜ˆ์™ธ ๋ฐœ์ƒ.
- q.offer(value); ์‚ฝ์ž… ์„ฑ๊ณต ์‹œ true ์‹คํŒจ ์‹œ false ๋ณ€ํ™˜.
**์‚ญ์ œ**
- q.remove(); ์‚ญ์ œ๋œ value ๋ฐ˜ํ™˜ ๊ณต๋ฐฑ ํ์ด๋ฉด ์˜ˆ์™ธ ๋ฐœ์ƒ.
- q.remove(value); ํ์— ํ•ด๋‹น ๊ฐ’์ด ์กด์žฌํ•˜๋ฉด ํ•ด๋‹น ๊ฐ’ ์‚ญ์ œ ํ›„ true ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด false.
- q.poll(); ์‚ญ์ œ๋œ value ๋ฐ˜ํ™˜ ๊ณต๋ฐฑ ํ์ด๋ฉด null ๋ฐ˜ํ™˜.
**ํ front**
- q.element(); ํ front์— ์œ„์น˜ํ•œ value ๋ฐ˜ํ™˜ ๊ณต๋ฐฑ์ด๋ฉด ์˜ˆ์™ธ ๋ฐœ์ƒ.
- q.peek(); ํ front์— ์œ„์น˜ํ•œ value ๋ฐ˜ํ™˜ ๊ณต๋ฐฑ์ด๋ฉด null ๋ฐ˜ํ™˜.