๋ณธ๋ฌธ์œผ๋กœ ๋ฐ”๋กœ๊ฐ€๊ธฐ

https://school.programmers.co.kr/learn/courses/30/lessons/138476?language=java 

 

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

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

programmers.co.kr


1. ๋ฌธ์ œ

์ƒ์ž์— ๋‹ด์œผ๋ ค๋Š” ๊ทค ๊ฐœ์ˆ˜์™€ ๊ทค ํฌ๊ธฐ ๋ฐฐ์—ด์ด ์ฃผ์–ด์ง„๋‹ค. ๊ทค ํฌ๊ธฐ๊ฐ€ ๋˜๋„๋ก ๊ฐ™์€ ๊ทค๋“ค๋งŒ ์ƒ์ž์— ๋‹ด์œผ๋ คํ•  ๋•Œ,

์ƒ์ž์— ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” ์ตœ์†Œ์˜ ๊ทค ํฌ๊ธฐ ์ˆ˜(์ข…๋ฅ˜์˜ ๊ฐœ์ˆ˜)๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

 

2. ํ’€์ด

1. ๊ทค ํฌ๊ธฐ, ๊ทค ๋ฐฐ์—ด์„ ๋ฐ›์•„์™€์„œ ํ•ด์‹œ๋งต์— key, ์ด์ „๊ฐ’+1 ํ•ด์„œ ๋„ฃ์–ด์คŒ

2. ํ•ด์‹œ๋งต ArrayList๋กœ ์ •๋ ฌ (value ํฐ ์ˆœ์œผ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ)

3. ๋‹ด์œผ๋ ค๋Š” ๊ทค ๊ฐœ์ˆ˜์—์„œ list ์ •๋ ฌ๋œ ์ˆœ์„œ๋Œ€๋กœ value๊ฐ’ ์ค„์ž„, ์ข…๋ฅ˜์˜ ๊ฐœ์ˆ˜ +1

 

3. ์ฝ”๋“œ

๋”๋ณด๊ธฐ
package p230103;

import java.io.*;
import java.util.*;

public class PG_๊ทค๊ณ ๋ฅด๊ธฐ {

	public static void main(String[] args) throws Exception {
		int k = 6;
		int[] tangerine = {1, 3, 2, 5, 4, 5, 2, 3};
		System.out.println(solution(k, tangerine));
		
		int k2 = 4;
		int[] tangerine2 = {1, 3, 2, 5, 4, 5, 2, 3};
		System.out.println(solution(k2, tangerine2));
		
		int k3 = 2;
		int[] tangerine3 = {1, 1, 1, 1, 2, 2, 2, 3};
		System.out.println(solution(k3, tangerine3));
		
	}
	
	public static int solution(int k, int[] tangerine) {
		int answer = 0;
		
		// 1. ํ•ด์‹œ๋งต์— ๊ฐ’ ๋„ฃ์–ด์คŒ
		Map<Integer, Integer> map = new HashMap<> ();
		for (int t: tangerine) {
			map.put(t, map.getOrDefault(t, 0)+1); //map์— ํ•ด๋‹น key ๊ฐ’์ด ์žˆ์œผ๋ฉด  ๊ทธ ํ‚ค ๊ฐ’ ๊ฐ€์ ธ์˜ค๊ณ , ์—†์œผ๋ฉด 0์„ ๋„ฃ๊ฒ ๋‹ค
		}
		
		// 2. ํ•ด์‹œ๋งต ArrayList์— ๋„ฃ์–ด์„œ ์ •๋ ฌ
		List<Integer> list = new ArrayList<> (map.values()); //map.keySet() => key๋กœ ์ •๋ ฌ / map.values() => value๋กœ ์ •๋ ฌ
		//list.sort((o1,o2) -> o2-o1); //๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ
		list.sort((o1,o2) -> o2-o1);
		System.out.println(list.toString());
		
		// 3. ์ข…๋ฅ˜ ์„ธ๊ธฐ
		int idx=0;
		while (k > 0) {
			k -= list.get(idx++); //list.indexOf("๊ฐ’")๋Š” ์ธ๋ฑ์Šค๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” ๊ฒƒ. ๊ฐ’์„ ๋ฆฌํ„ดํ•˜๋ ค๋ฉด  list.get(idx) ์‚ฌ์šฉ
			answer++;
		}
		
		return answer;
	}
}

 

4. ์‚ฌ๋‹ด

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฌธ์ œ๋Š” ์ œ๋Œ€๋กœ ํ‘ธ๋Š”๊ฑด ์ฒ˜์Œ์ธ ๊ฒƒ ๊ฐ™๋‹ค

๋ฐฑ์ค€์ด๋ž‘ ๋ฐฉ์‹์€ ์•ฝ๊ฐ„ ๋‹ค๋ฅธ๋ฐ ์žฌ๋ฐŒ๋Š” ๊ฒƒ ๊ฐ™๋‹ค