[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] Lv2. ๊ทค ๊ณ ๋ฅด๊ธฐ

2023. 3. 7. 10:00ใ†์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค_2023

728x90

 

๋ฌธ์ œ ์„ค๋ช…

๊ฒฝํ™”๋Š” ๊ณผ์ˆ˜์›์—์„œ ๊ทค์„ ์ˆ˜ํ™•ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฒฝํ™”๋Š” ์ˆ˜ํ™•ํ•œ ๊ทค ์ค‘ 'k'๊ฐœ๋ฅผ ๊ณจ๋ผ ์ƒ์ž ํ•˜๋‚˜์— ๋‹ด์•„ ํŒ๋งคํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ˆ˜ํ™•ํ•œ ๊ทค์˜ ํฌ๊ธฐ๊ฐ€ ์ผ์ •ํ•˜์ง€ ์•Š์•„ ๋ณด๊ธฐ์— ์ข‹์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ•œ ๊ฒฝํ™”๋Š” ๊ทค์„ ํฌ๊ธฐ๋ณ„๋กœ ๋ถ„๋ฅ˜ํ–ˆ์„ ๋•Œ ์„œ๋กœ ๋‹ค๋ฅธ ์ข…๋ฅ˜์˜ ์ˆ˜๋ฅผ ์ตœ์†Œํ™”ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ๊ฒฝํ™”๊ฐ€ ์ˆ˜ํ™•ํ•œ ๊ทค 8๊ฐœ์˜ ํฌ๊ธฐ๊ฐ€ [1, 3, 2, 5, 4, 5, 2, 3] ์ด๋ผ๊ณ  ํ•ฉ์‹œ๋‹ค. ๊ฒฝํ™”๊ฐ€ ๊ทค 6๊ฐœ๋ฅผ ํŒ๋งคํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, ํฌ๊ธฐ๊ฐ€ 1, 4์ธ ๊ทค์„ ์ œ์™ธํ•œ ์—ฌ์„ฏ ๊ฐœ์˜ ๊ทค์„ ์ƒ์ž์— ๋‹ด์œผ๋ฉด, ๊ทค์˜ ํฌ๊ธฐ์˜ ์ข…๋ฅ˜๊ฐ€ 2, 3, 5๋กœ ์ด 3๊ฐ€์ง€๊ฐ€ ๋˜๋ฉฐ ์ด๋•Œ๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅธ ์ข…๋ฅ˜๊ฐ€ ์ตœ์†Œ์ผ ๋•Œ์ž…๋‹ˆ๋‹ค.

๊ฒฝํ™”๊ฐ€ ํ•œ ์ƒ์ž์— ๋‹ด์œผ๋ ค๋Š” ๊ทค์˜ ๊ฐœ์ˆ˜ k์™€ ๊ทค์˜ ํฌ๊ธฐ๋ฅผ ๋‹ด์€ ๋ฐฐ์—ด tangerine์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. ๊ฒฝํ™”๊ฐ€ ๊ทค k๊ฐœ๋ฅผ ๊ณ ๋ฅผ ๋•Œ ํฌ๊ธฐ๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅธ ์ข…๋ฅ˜์˜ ์ˆ˜์˜ ์ตœ์†Ÿ๊ฐ’์„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.


์ œํ•œ์‚ฌํ•ญ
  • 1 ≤ k  tangerine์˜ ๊ธธ์ด ≤ 100,000
  • 1 ≤ tangerine์˜ ์›์†Œ ≤ 10,000,000

์ž…์ถœ๋ ฅ ์˜ˆ
k                       tangerine                                                                                                                                 result
6 [1, 3, 2, 5, 4, 5, 2, 3] 3
4 [1, 3, 2, 5, 4, 5, 2, 3] 2
2 [1, 1, 1, 1, 2, 2, 2, 3] 1

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

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

  • ๋ณธ๋ฌธ์—์„œ ์„ค๋ช…ํ•œ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.

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

  • ๊ฒฝํ™”๋Š” ํฌ๊ธฐ๊ฐ€ 2์ธ ๊ทค 2๊ฐœ์™€ 3์ธ ๊ทค 2๊ฐœ ๋˜๋Š” 2์ธ ๊ทค 2๊ฐœ์™€ 5์ธ ๊ทค 2๊ฐœ ๋˜๋Š” 3์ธ ๊ทค 2๊ฐœ์™€ 5์ธ ๊ทค 2๊ฐœ๋กœ ๊ทค์„ ํŒ๋งคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋•Œ์˜ ํฌ๊ธฐ ์ข…๋ฅ˜๋Š” 2๊ฐ€์ง€๋กœ ์ด ๊ฐ’์ด ์ตœ์†Œ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

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

  • ๊ฒฝํ™”๋Š” ํฌ๊ธฐ๊ฐ€ 1์ธ ๊ทค 2๊ฐœ๋ฅผ ํŒ๋งคํ•˜๊ฑฐ๋‚˜ 2์ธ ๊ทค 2๊ฐœ๋ฅผ ํŒ๋งคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋•Œ์˜ ํฌ๊ธฐ ์ข…๋ฅ˜๋Š” 1๊ฐ€์ง€๋กœ, ์ด ๊ฐ’์ด ์ตœ์†Œ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

 

 

 

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

public int solution(int k, int[] tangerine) {
   int answer = 0;
   Map<Integer, Integer> map = new HashMap<>();
   
   for (int i : tangerine)
   {
      map.put(i, map.getOrDefault(i, 0) + 1);
   }
   
   List<Integer> collect = map.values().stream().sorted()
         .collect(Collectors.toList());
   
   for (int i = collect.size()-1; i >= 0; i--)
   {
      if (k > 0) {
         k -= collect.get(i);
         answer++;
      }
   }
   
   return answer;
}

์ด ๋ฌธ์ œ๋ฅผ ํ’€ ๋•Œ ์ƒ๊ฐ๋‚œ ๋ฐฉ๋ฒ•์€ Map์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด์—ˆ๋‹ค..! ๋‚ด๊ฐ€ Map ์‚ฌ์šฉ์— ๋น ์กŒ๋‚˜.. ๊ณ„์† ๋ฐฉ๋ฒ•์ด Map ๋ฐ–์— ๊ธฐ์–ต์ด ์•ˆ๋‚จ ..ใ…Žใ…Ž 

์•„๋ฌดํŠผ Map์œผ๋กœ ๊ทค์˜ ์‚ฌ์ด์ฆˆ๋ฅผ key ๊ฐ’์œผ๋กœ ๋‘๊ณ , ๊ทค ์‚ฌ์ด์ฆˆ๋ณ„ ๊ฐœ์ˆ˜๋ฅผ value๋กœ ๋‘๋Š” ๊ฑธ ์ƒ๊ฐํ–ˆ๋‹ค. 

 

๊ทธ๋ฆฌ๊ณ  ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฌธ์ œ ํ’€๋ฉด์„œ ์•Œ๊ฒŒ ๋œ (?) getOrDefault ๋ฅผ ์‚ฌ์šฉํ•ด์„œ key๊ฐ’์ธ ๊ทค ์‚ฌ์ด์ฆˆ๋ฅผ ๋ฐœ๊ฒฌํ•˜๋ฉด +1 ์”ฉ ํ•ด์ฃผ๊ณ  ์•„๋‹ˆ๋ฉด ๊ธฐ๋ณธ๊ฐ’ 0 ์„ ๋„ฃ๋„๋ก ํ•ด์คฌ๋‹ค. 

 

์ตœ๋Œ€ํ•œ ๊ฐ™์€ ํฌ๊ธฐ๋กœ ๊ทค์„ ๊ณจ๋ผ์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์Œ์€ ์ด์ œ value ๊ฐ’์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ •๋ ฌ์„ ํ•ด์คฌ๊ณ , ํ•œ ์ƒ์ž์— ๋‹ด์•„์•ผ ํ•˜๋Š” ๊ทค์˜ ๊ฐœ์ˆ˜ k๊ฐœ๊ฐ€ 0๋ณด๋‹ค ํด ๊ฒฝ์šฐ๊นŒ์ง€ ๊ทค์„ ๋„ฃ์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— k > 0 ์œผ๋กœ ํ•ด์„œ ๊ทค์„ ๋นผ์ฃผ๊ณ , ๋‹ค์Œ answer ์„ 1์”ฉ ์ฆ๊ฐ€ํ•ด์ฃผ๋ฉด ๋œ๋‹ค! 

 

 

 

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

public int otherSolution(int k, int[] tangerine)
{
   int answer = 0;
   Map<Integer, Integer> map = new HashMap<>();
   
   for (int i : tangerine)
   {
      map.put(i, map.getOrDefault(i, 0) + 1);
   }
   
   List<Integer> list = new ArrayList<>(map.keySet());
   list.sort(((o1, o2) -> map.get(o2) - map.get(o1)));
   
   for (Integer key : list)
   {
      if (k > 0) {
         k -= map.get(key);
         answer++;
      }
   }
   
   return answer;
}

๋ฐฉ๋ฒ•์€ ๋‚˜๋ž‘ ๋น„์Šทํ•œ๋ฐ ์ •๋ ฌํ•ด์„œ ๊ฐ’์„ ์–ด๋–ป๊ฒŒ ๋ฝ‘์•„์˜ค๋Š” ์ง€ ์ด ๋ฐฉ๋ฒ•์ด ๋‹ค๋ฅผ ๋ฟ!!! 

List์— map์˜ key๊ฐ’์„ ๋„ฃ์–ด์ฃผ๊ณ , ๋‹ค์Œ list๋ฅผ ์ •๋ ฌํ•  ๋•Œ map์—์„œ ํ•ด๋‹น ํ‚ค ๊ฐ’์„ ๊ตฌํ•ด ์ด ๊ฐ’ ๊ธฐ๋ฐ˜์œผ๋กœ ์ •๋ ฌํ•ด์คฌ๋‹ค๋Š” ์ ์ด๋‹ค!! 

์ด๋Ÿฐ ๋ฐฉ๋ฒ•๋„ ์•Œ์•„๋‘ฌ์•ผ์ง€~_~ 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90