๋ฌธ์ ์ ๊ทผ
https://school.programmers.co.kr/learn/courses/30/lessons/92334
ํ๋ก๊ทธ๋๋จธ์ค
SW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก์ Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํ
programmers.co.kr
ํด์๋ฅผ ์ฌ์ฉํ๋ฉด ์ฝ๊ฒ ํด๊ฒฐํ ์ ์๋ ๋ฌธ์ ์๋ค!
์ฌ๋ฌ ๋ฐฉ๋ฒ์ด ์๊ฒ ์ง๋ง ๊ฐ์ฅ ์ง๊ด์ ์ผ๋ก ๊ฐ ์ ์ ๋ณ๋ก ๋๊ฐ ์ ๊ณ ๋ฅผ ํ๋์ง List์ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ Map ํ๋์
๊ฐ ์ ์ ๋ณ๋ก ์ฒ๋ฆฌ ๊ฒฐ๊ณผ ๋ฉ์ผ์ ๋ช ๊ฐ๋ฅผ ๋ฐ์์ผํ๋์ง๋ฅผ ๊ธฐ๋กํ๋ ๋ ๋ค๋ฅธ Map ํ๋๋ฅผ ์ด์ฉํ์ฌ ๋ฌธ์ ๋ฅผ ํ์ดํ๋ ๋ฐฉํฅ์ฑ์ ์๊ฐํ๋ค.
๋ฌธ์ ํ์ด
ํ ์ ์ ๋ฅผ ์ฌ๋ฌ ๋ฒ ์ ๊ณ ํ ์๋ ์์ง๋ง, ๋์ผํ ์ ์ ์ ๋ํ ์ ๊ณ ํ์๋ 1ํ๋ก ์ฒ๋ฆฌ๋๊ธฐ ๋๋ฌธ์ Set์ ์ด์ฉํด์ ์ด๋ฐ ์ค๋ณต ์ ๊ณ ๋ฅผ ์ ๊ฑฐํด์คฌ๋ค.
=> ๊ทธ๋ฆฌ๊ณ ์์์ ๋งํ๋๋ก Map 2๊ฐ๋ฅผ ์ ์ธํ๊ณ ๊ฐ ์ ์ ๋ณ๋ก ์ด๊ธฐํํด์คฌ์
์ด๋ ๊ฒ ๋ฐ๋ณต๋ฌธ์ ๋ชจ๋ ๋๊ฒ๋๋ฉด reportMap์ ๊ฐ ์ ์ ๋ณ๋ก ๊ฐ์ง๊ณ ์๋ List์ size๊ฐ ์ ๊ณ ๋ฅผ ๋นํ ํ์์
=> ์ด size๊ฐ k ์ด์์ด๋ผ๋ฉด ํด๋น ์ ์ ๋ฅผ ์ ๊ณ ํ ๋ชจ๋ ์ด์ฉ์(size๊ฐ k๊ฐ ๋๋ List์ ๋ด๊ฒจ์๋ ์ ์ ๋ค)์ resultMap์ +1์ ํด์ฃผ๋ฉฐ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ ๋ฉ์ผ ๊ฐ์๋ฅผ +1 ํด์ค
์ด์ ์ด resultMap์๋ ๊ฐ ์ ์ ๋ณ๋ก ์ฒ๋ฆฌ ๊ฒฐ๊ณผ ๋ฉ์ผ์ ๋ช๊ฐ ๋ฐ์์ผํ๋์ง๊ฐ ๋ค์ด์์ผ๋ฏ๋ก ์ด๋ฅผ ๊ทธ๋๋ก ์ ๋ต ๋ฐฐ์ด์ ๋ด์์ ๋ฐํํด์ฃผ๋ฉด ๋๋จ
์ ์ฒด ์ฝ๋
import java.util.*;
class Solution {
public int[] solution(String[] id_list, String[] report, int k) {
Set<String> set = new HashSet<>(); // ์ค๋ณต ์ ๊ณ ๋ฅผ ์์ ๊ธฐ ์ํ Set
Map<String, List<String>> reportMap = new HashMap<>(); // ๊ฐ ์ ์ ๋ณ ์ ๊ณ ๋นํ ๋ชฉ๋ก
Map<String, Integer> resultMap = new HashMap<>(); // ์ฒ๋ฆฌ ๊ฒฐ๊ณผ ๋ฉ์ผ์ ๋ฐ์ ์
// Map ์ด๊ธฐํ
for(int i = 0; i < id_list.length; i++) {
reportMap.put(id_list[i], new ArrayList<>());
resultMap.put(id_list[i], 0);
}
// report์ ์ค๋ณต ์ ๊ณ ์ ๊ฑฐ
for(int i = 0; i < report.length; i++) {
set.add(report[i]);
}
// ๊ฐ ์ ์ ๋ณ๋ก ํด๋น ์ ์ ๋ฅผ ์ ๊ณ ํ ์ ์ ์ List๋ฅผ ๊ฐฑ์
for(String s : set) {
String[] temp = s.split(" ");
reportMap.get(temp[1]).add(temp[0]);
}
// ์ ๊ณ ํ์ k ๋์ ์ ์ ๋ฅผ ์ ๊ณ ํ ๋ชจ๋ ์ด์ฉ์์๊ฒ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ ๋ฉ์ผ ๊ฐ์๋ฅผ +1 ํด์ค
for(Map.Entry<String, List<String>> entrySet : reportMap.entrySet()) {
List<String> list = entrySet.getValue();
if(list.size() >= k) {
for(int i = 0; i < list.size(); i++) {
resultMap.put(list.get(i), resultMap.get(list.get(i)) + 1);
}
}
}
int[] answer = new int[id_list.length];
// ๊ฐ ์ ์ ๋ณ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ answer ๋ฐฐ์ด์ ์ ์ฅ
for(int i = 0; i < id_list.length; i++) {
answer[i] = resultMap.get(id_list[i]);
}
return answer;
}
}
'๐ฅ Algorithm > ๊ตฌํ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [ํ๋ก๊ทธ๋๋จธ์ค] ์ค์ต์ฉ ๋ก๋ด (JAVA ํ์ด) (0) | 2025.11.02 |
|---|---|
| [ํ๋ก๊ทธ๋๋จธ์ค] ์ธํจ์ด ์ํ๋ฒณ (JAVA ํ์ด) (0) | 2025.10.29 |
| [ํ๋ก๊ทธ๋๋จธ์ค] k์ง์์์ ์์ ๊ฐ์ ๊ตฌํ๊ธฐ (JAVA ํ์ด) (0) | 2025.10.25 |
| [ํ๋ก๊ทธ๋๋จธ์ค] ์ฃผ์ฐจ ์๊ธ ๊ณ์ฐ (JAVA ํ์ด) (0) | 2025.10.16 |
| [ํ๋ก๊ทธ๋๋จธ์ค] ํคํจ๋ ๋๋ฅด๊ธฐ (JAVA ํ์ด) (0) | 2025.10.16 |