[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] Lv1. ๋ช…์˜ˆ์˜ ์ „๋‹น (1)

2023. 2. 23. 13:21ใ†์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค_2023

728x90

 

๋ฌธ์ œ ์„ค๋ช…

"๋ช…์˜ˆ์˜ ์ „๋‹น"์ด๋ผ๋Š” TV ํ”„๋กœ๊ทธ๋žจ์—์„œ๋Š” ๋งค์ผ 1๋ช…์˜ ๊ฐ€์ˆ˜๊ฐ€ ๋…ธ๋ž˜๋ฅผ ๋ถ€๋ฅด๊ณ , ์‹œ์ฒญ์ž๋“ค์˜ ๋ฌธ์ž ํˆฌํ‘œ์ˆ˜๋กœ ๊ฐ€์ˆ˜์—๊ฒŒ ์ ์ˆ˜๋ฅผ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค. ๋งค์ผ ์ถœ์—ฐํ•œ ๊ฐ€์ˆ˜์˜ ์ ์ˆ˜๊ฐ€ ์ง€๊ธˆ๊นŒ์ง€ ์ถœ์—ฐ ๊ฐ€์ˆ˜๋“ค์˜ ์ ์ˆ˜ ์ค‘ ์ƒ์œ„ k๋ฒˆ์งธ ์ด๋‚ด์ด๋ฉด ํ•ด๋‹น ๊ฐ€์ˆ˜์˜ ์ ์ˆ˜๋ฅผ ๋ช…์˜ˆ์˜ ์ „๋‹น์ด๋ผ๋Š” ๋ชฉ๋ก์— ์˜ฌ๋ ค ๊ธฐ๋…ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰ ํ”„๋กœ๊ทธ๋žจ ์‹œ์ž‘ ์ดํ›„ ์ดˆ๊ธฐ์— k์ผ๊นŒ์ง€๋Š” ๋ชจ๋“  ์ถœ์—ฐ ๊ฐ€์ˆ˜์˜ ์ ์ˆ˜๊ฐ€ ๋ช…์˜ˆ์˜ ์ „๋‹น์— ์˜ค๋ฅด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. k์ผ ๋‹ค์Œ๋ถ€ํ„ฐ๋Š” ์ถœ์—ฐ ๊ฐ€์ˆ˜์˜ ์ ์ˆ˜๊ฐ€ ๊ธฐ์กด์˜ ๋ช…์˜ˆ์˜ ์ „๋‹น ๋ชฉ๋ก์˜ k๋ฒˆ์งธ ์ˆœ์œ„์˜ ๊ฐ€์ˆ˜ ์ ์ˆ˜๋ณด๋‹ค ๋” ๋†’์œผ๋ฉด, ์ถœ์—ฐ ๊ฐ€์ˆ˜์˜ ์ ์ˆ˜๊ฐ€ ๋ช…์˜ˆ์˜ ์ „๋‹น์— ์˜ค๋ฅด๊ฒŒ ๋˜๊ณ  ๊ธฐ์กด์˜ k๋ฒˆ์งธ ์ˆœ์œ„์˜ ์ ์ˆ˜๋Š” ๋ช…์˜ˆ์˜ ์ „๋‹น์—์„œ ๋‚ด๋ ค์˜ค๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ด ํ”„๋กœ๊ทธ๋žจ์—์„œ๋Š” ๋งค์ผ "๋ช…์˜ˆ์˜ ์ „๋‹น"์˜ ์ตœํ•˜์œ„ ์ ์ˆ˜๋ฅผ ๋ฐœํ‘œํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, k = 3์ด๊ณ , 7์ผ ๋™์•ˆ ์ง„ํ–‰๋œ ๊ฐ€์ˆ˜์˜ ์ ์ˆ˜๊ฐ€ [10, 100, 20, 150, 1, 100, 200]์ด๋ผ๋ฉด, ๋ช…์˜ˆ์˜ ์ „๋‹น์—์„œ ๋ฐœํ‘œ๋œ ์ ์ˆ˜๋Š” ์•„๋ž˜์˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด [10, 10, 10, 20, 20, 100, 100]์ž…๋‹ˆ๋‹ค.

๋ช…์˜ˆ์˜ ์ „๋‹น ๋ชฉ๋ก์˜ ์ ์ˆ˜์˜ ๊ฐœ์ˆ˜ k, 1์ผ๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ ๋‚ ๊นŒ์ง€ ์ถœ์—ฐํ•œ ๊ฐ€์ˆ˜๋“ค์˜ ์ ์ˆ˜์ธ score๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ๋งค์ผ ๋ฐœํ‘œ๋œ ๋ช…์˜ˆ์˜ ์ „๋‹น์˜ ์ตœํ•˜์œ„ ์ ์ˆ˜๋ฅผ returnํ•˜๋Š” solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

์ œํ•œ์‚ฌํ•ญ
  • 3 ≤ k ≤ 100
  • 7 ≤ score์˜ ๊ธธ์ด ≤ 1,000
    • 0 ≤ score[i] ≤ 2,000

 

์ž…์ถœ๋ ฅ ์˜ˆ
k       score                                                                                             result
3 [10, 100, 20, 150, 1, 100, 200] [10, 10, 10, 20, 20, 100, 100]
4 [0, 300, 40, 300, 20, 70, 150, 50, 500, 1000] [0, 0, 0, 0, 20, 40, 70, 70, 150, 300]

์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

์ž…์ถœ๋ ฅ ์˜ˆ #1

  • ๋ฌธ์ œ์˜ ์˜ˆ์‹œ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ #2

  • ์•„๋ž˜์™€ ๊ฐ™์ด, [0, 0, 0, 0, 20, 40, 70, 70, 150, 300]์„ returnํ•ฉ๋‹ˆ๋‹ค. 

 

 

 

๋‚˜์˜ ํ’€์ด

public int[] solution(int k, int[] score) {
   int[] answer = new int[score.length];
   ArrayList<Integer> arrayList = new ArrayList<>();
   
   int min = score[0];
   for (int i = 0; i< score.length; i++)
   {
      if (i < k) {
         arrayList.add(score[i]);
         min = Math.min(min, score[i]);
         answer[i] = min;
      }else {
         if (min < score[i]) {
            arrayList.add(score[i]);
            arrayList.remove(0);
            arrayList.sort(Integer::compareTo);
         }
         min = arrayList.get(0);
         answer[i] = arrayList.get(0);
      }
      arrayList.sort(Integer::compareTo);
      
   }
   
   return answer;
}

๋‚ด๊ฐ€ ํ‘ผ ๋ฐฉ์‹์€ ์ข€ ๋ณต์žกํ•˜๊ฒŒ ? ํ‘ผ ๊ฒƒ ๊ฐ™๊ธดํ•œ๋ฐ.. ์ผ๋‹จ 

๋ช…์˜ˆ์˜ ์ „๋‹น ๋ชฉ๋ก์˜ ์ ์ˆ˜์˜ ๊ฐœ์ˆ˜ k ๊นŒ์ง€๋Š” arraylist์— ๋‹ด์•„์ฃผ๊ณ , ๊ทธ ์ค‘ ์ตœ์†Œ๊ฐ’์„ ๊ตฌํ•ด์„œ answer ๋ฐฐ์—ด์— ๋‹ด์•„์ค€๋‹ค. 

๊ทธ๋ฆฌ๊ณ  k๊ฐœ ์ด์ƒ์œผ๋กœ ๋„˜์–ด๊ฐ€๋ฉด ์ด์ œ score์˜ ๊ฐ’์ด min๋ณด๋‹ค ํฌ๋ฉด arraylist๋ฅผ ์ •๋ ฌํ•ด์„œ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์€ ์ œ๊ฑฐํ•˜๊ณ , score ๊ฐ’์„ ๋„ฃ์–ด์ค€๋‹ค. 

๋ญ”๊ฐ€ ์ฝ”๋“œ ๋” ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๊ธดํ•ด์„œ ๋‚˜์ค‘์— ์ˆ˜์ •ํ•ด๋ณด๋Š” ๊ฒƒ๋„ ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค. ์ด๊ฑด ๊ทธ๋ƒฅ ๋‹ต๋งŒ ๋‚˜์˜ค๊ฒŒํ•œ ์ฝ”๋“œ๊ฐ™์€ ๊ธฐ๋ถ„...๐Ÿ˜ฎ

 

 

 

๋‹ค๋ฅธ ์‚ฌ๋žŒ ํ’€์ด

public int[] otherSolution(int k, int[] score) {
   int[] answer = new int[score.length];
   
   PriorityQueue<Integer> priorityQueue = new PriorityQueue<>();
   
   for (int i = 0; i< score.length; i++)
   {
      priorityQueue.add(score[i]);
      
      if (priorityQueue.size() > k) {
         priorityQueue.poll();
      }
      answer[i] = priorityQueue.peek();
   }
   
   return answer;
}

์•„.. ์ž๋ฃŒ ๊ตฌ์กฐ ๋” ๊ณต๋ถ€ํ•ด์•ผ๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐ์ด ๋“œ๋Š” ์ฝ”๋“œ๋‹ค..

priorityQueue๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋ ‡๊ฒŒ ์‰ฝ๊ฒŒ ํ•ด๊ฒฐ๋˜๋Š”๋ฐ... ๋‚˜๋Š” ์—„์ฒญ ๋ณต์žกํ•˜๊ฒŒ ๋งŒ๋“  ๊ฒƒ์ด๋‹ค..ใ… ใ… ใ… ใ… ใ… 

๋ฐ˜์„ฑํ•˜๊ฒŒ ๋˜๋Š”๊ตฌ๋‚˜.. ์ž๋ฐ” ๊ณต๋ถ€๋ฅผ ์†Œํ™€ํžˆ ํ•˜๋‹ˆ๊นŒ ์ด๋Ÿฌ๋Š”๊ตฌ๋‚˜... ์˜ค๋Š˜์ด๋ผ๋„ ์•Œ์•˜์œผ๋‹ˆ๊นŒ ๋นจ๋ฆฌ ์ •๋ฆฌํ•ด์„œ ์ด์ œ ์ด๊ฑธ ์‚ฌ์šฉํ•˜๋„๋ก ํ•˜๋ฉด ๋˜๋‹ˆ๊นŒ ใ…Žใ…Žใ…Ž ๊ดœ์ฐฎ์•„!! 

๊นŒ๋จน์ง€ ์•Š๊ฒŒ ์˜ค๋Š˜ TIL ์ฃผ์ œ๋กœ priorityQueue๋ฅผ ๊ณต๋ถ€ํ•ด์•ผ๊ฒ ๋‹ค..!! 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90