01-07 02:28
Recent Posts
Recent Comments
Tags
- DATABASE
- ํ์ด์ฌ
- ict๊ณต๋ชจ์
- ICT๋ฉํ ๋ง
- Java
- python
- ํ์ด์
- ์๋์ด๋ ธ
- ํ์ด์๊ณต๋ชจ์
- ์จ์ผ๋ํ
- Naver Cloud
- ์ด๋ธ์
- mysql
- ์คํฝ๋ ํ
- ICT
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- API MarketPlace ๊ธ๋ก๋ฒ ์ํฌํฐ์ฆ
- API๋ง์ผํ๋ ์ด์ค
- DB
- appetizer
- ์๋ฐ
- Spring
- linux
- TSQL
- SQL
- ํ๋ก๋ณด๋ ธ
- RaspberryPi
- JOBํ๊ณ
- ์คํฝ์ค๋น
- ์กํ๊ณ
- Today
- Total
miinsun
[Programmers] 2022 KAKAO BLIND RECRUITMENT : ์ ๊ณ ๊ฒฐ๊ณผ ๋ฐ๊ธฐ JAVA ๋ณธ๋ฌธ
Algorithm/Programmers
[Programmers] 2022 KAKAO BLIND RECRUITMENT : ์ ๊ณ ๊ฒฐ๊ณผ ๋ฐ๊ธฐ JAVA
miinsun 2022. 6. 17. 02:27
๐ฌ ๋ฌธ์ ์ค๋ช
์ ์ ์ฌ์ ๋ฌด์ง๋ ๊ฒ์ํ ๋ถ๋ ์ด์ฉ์๋ฅผ ์ ๊ณ ํ๊ณ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋ฉ์ผ๋ก ๋ฐ์กํ๋ ์์คํ ์ ๊ฐ๋ฐํ๋ ค ํฉ๋๋ค. ๋ฌด์ง๊ฐ ๊ฐ๋ฐํ๋ ค๋ ์์คํ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
1) ๊ฐ ์ ์ ๋ ํ ๋ฒ์ ํ ๋ช ์ ์ ์ ๋ฅผ ์ ๊ณ ํ ์ ์์ต๋๋ค.
- ์ ๊ณ ํ์์ ์ ํ์ ์์ต๋๋ค. ์๋ก ๋ค๋ฅธ ์ ์ ๋ฅผ ๊ณ์ํด์ ์ ๊ณ ํ ์ ์์ต๋๋ค.
- ํ ์ ์ ๋ฅผ ์ฌ๋ฌ ๋ฒ ์ ๊ณ ํ ์๋ ์์ง๋ง, ๋์ผํ ์ ์ ์ ๋ํ ์ ๊ณ ํ์๋ 1ํ๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค.
2) k๋ฒ ์ด์ ์ ๊ณ ๋ ์ ์ ๋ ๊ฒ์ํ ์ด์ฉ์ด ์ ์ง๋๋ฉฐ, ํด๋น ์ ์ ๋ฅผ ์ ๊ณ ํ ๋ชจ๋ ์ ์ ์๊ฒ ์ ์ง ์ฌ์ค์ ๋ฉ์ผ๋ก ๋ฐ์กํฉ๋๋ค.
- ์ ์ ๊ฐ ์ ๊ณ ํ ๋ชจ๋ ๋ด์ฉ์ ์ทจํฉํ์ฌ ๋ง์ง๋ง์ ํ๊บผ๋ฒ์ ๊ฒ์ํ ์ด์ฉ ์ ์ง๋ฅผ ์ํค๋ฉด์ ์ ์ง ๋ฉ์ผ์ ๋ฐ์กํฉ๋๋ค.
๋ค์์ ์ ์ฒด ์ ์ ๋ชฉ๋ก์ด ["muzi", "frodo", "apeach", "neo"]์ด๊ณ , k = 2(์ฆ, 2๋ฒ ์ด์ ์ ๊ณ ๋นํ๋ฉด ์ด์ฉ ์ ์ง)์ธ ๊ฒฝ์ฐ์ ์์์ ๋๋ค.
๊ฐ ์ ์ ๋ณ๋ก ์ ๊ณ ๋นํ ํ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ ์์์์๋ 2๋ฒ ์ด์ ์ ๊ณ ๋นํ "frodo"์ "neo"์ ๊ฒ์ํ ์ด์ฉ์ด ์ ์ง๋ฉ๋๋ค. ์ด๋, ๊ฐ ์ ์ ๋ณ๋ก ์ ๊ณ ํ ์์ด๋์ ์ ์ง๋ ์์ด๋๋ฅผ ์ ๋ฆฌํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋ฐ๋ผ์ "muzi"๋ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ ๋ฉ์ผ์ 2ํ, "frodo"์ "apeach"๋ ๊ฐ๊ฐ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ ๋ฉ์ผ์ 1ํ ๋ฐ๊ฒ ๋ฉ๋๋ค.
์ด์ฉ์์ ID๊ฐ ๋ด๊ธด ๋ฌธ์์ด ๋ฐฐ์ด id_list, ๊ฐ ์ด์ฉ์๊ฐ ์ ๊ณ ํ ์ด์ฉ์์ ID ์ ๋ณด๊ฐ ๋ด๊ธด ๋ฌธ์์ด ๋ฐฐ์ด report, ์ ์ง ๊ธฐ์ค์ด ๋๋ ์ ๊ณ ํ์ k๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ๊ฐ ์ ์ ๋ณ๋ก ์ฒ๋ฆฌ ๊ฒฐ๊ณผ ๋ฉ์ผ์ ๋ฐ์ ํ์๋ฅผ ๋ฐฐ์ด์ ๋ด์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
๐ซ ์ ํ ์ฌํญ
- 2 ≤ id_list์ ๊ธธ์ด ≤ 1,000
- 1 ≤ id_list์ ์์ ๊ธธ์ด ≤ 10
- id_list์ ์์๋ ์ด์ฉ์์ id๋ฅผ ๋ํ๋ด๋ ๋ฌธ์์ด์ด๋ฉฐ ์ํ๋ฒณ ์๋ฌธ์๋ก๋ง ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
- id_list์๋ ๊ฐ์ ์์ด๋๊ฐ ์ค๋ณตํด์ ๋ค์ด์์ง ์์ต๋๋ค.
- 1 ≤ report์ ๊ธธ์ด ≤ 200,000
- 3 ≤ report์ ์์ ๊ธธ์ด ≤ 21
- report์ ์์๋ "์ด์ฉ์id ์ ๊ณ ํid"ํํ์ ๋ฌธ์์ด์ ๋๋ค.
- ์๋ฅผ ๋ค์ด "muzi frodo"์ ๊ฒฝ์ฐ "muzi"๊ฐ "frodo"๋ฅผ ์ ๊ณ ํ๋ค๋ ์๋ฏธ์ ๋๋ค.
- id๋ ์ํ๋ฒณ ์๋ฌธ์๋ก๋ง ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
- ์ด์ฉ์id์ ์ ๊ณ ํid๋ ๊ณต๋ฐฑ(์คํ์ด์ค)ํ๋๋ก ๊ตฌ๋ถ๋์ด ์์ต๋๋ค.
- ์๊ธฐ ์์ ์ ์ ๊ณ ํ๋ ๊ฒฝ์ฐ๋ ์์ต๋๋ค.
- 1 ≤ k ≤ 200, k๋ ์์ฐ์์ ๋๋ค.
- return ํ๋ ๋ฐฐ์ด์ id_list์ ๋ด๊ธด id ์์๋๋ก ๊ฐ ์ ์ ๊ฐ ๋ฐ์ ๊ฒฐ๊ณผ ๋ฉ์ผ ์๋ฅผ ๋ด์ผ๋ฉด ๋ฉ๋๋ค.
๐จ ์ ์ถ๋ ฅ ์
- ์
์ถ๋ ฅ ์ #1
- ๋ฌธ์ ์ ์์์ ๊ฐ์ต๋๋ค.
- ์
์ถ๋ ฅ ์ #2
- "ryan"์ด "con"์ 4๋ฒ ์ ๊ณ ํ์ผ๋, ์ฃผ์ด์ง ์กฐ๊ฑด์ ๋ฐ๋ผ ํ ์ ์ ๊ฐ ๊ฐ์ ์ ์ ๋ฅผ ์ฌ๋ฌ ๋ฒ ์ ๊ณ ํ ๊ฒฝ์ฐ๋ ์ ๊ณ ํ์ 1ํ๋ก ์ฒ๋ฆฌํฉ๋๋ค. ๋ฐ๋ผ์ "con"์ 1ํ ์ ๊ณ ๋นํ์ต๋๋ค. 3๋ฒ ์ด์ ์ ๊ณ ๋นํ ์ด์ฉ์๋ ์์ผ๋ฉฐ, "con"๊ณผ "ryan"์ ๊ฒฐ๊ณผ ๋ฉ์ผ์ ๋ฐ์ง ์์ต๋๋ค. ๋ฐ๋ผ์ [0, 0]์ return ํฉ๋๋ค.
โ
๐ป Solution.java
๋จผ์ , ๋ฌธ์ ๋ฅผ ํ์ดํ๋ ์ ์ฐจ๋ฅผ ์๊ฐํ๊ณ ํ์ด๋ณด๋๋ก ํ์.
1. ์ ๊ณ ์์ ์ ๊ณ ๋นํ ์ฌ๋๋ค์ ์ ๋ณด๋ฅผ ๊ฐ๊ฐ ์ ์ฅํ๋ค . (์ ๊ณ map)
- ๊ธฐ์กด hashMap์ ์ ์ฅ๋ ์์๋๋ก ์ ๋ ฌ๋์ง์๊ธฐ ๋๋ฌธ์ LinkedHashMap์ ์ด์ฉํด ID์์ผ๋ก ์ ๊ณ ์, ์ ๊ณ ๋นํ ์ฌ๋๋ค์ ์ ๋ณด๊ฐ ์ ์ฅ๋๋๋ก ํ๋ค.
- ์ด๋ฏธ (์ ๊ณ ์, ์ ๊ณ ๋นํ์ฌ๋)์ ์กฐํฉ์ด ์ค๋ณต๋๋ ๊ฒฝ์ฐ๊ฐ ์๋ค๋ฉด List์ ํฌํฉ๋์ง ์๋๋กํด์ผํ๋ค.
reporter | reported |
muzi | frodo, neo |
frodo | neo |
apeach | frodo, muzi |
neo |
2. ์ ์ง ๊ธฐ์ค์ ๋์ ์ฌ๋๋ค์ ์ ์ง๋๋ค. (์ ๊ณ ํ์ map)
- ํ์์ ID๋ณ๋ก ์ ๊ณ ๋นํ ํ์๋ฅผ ๊ธฐ๋กํด์ค๋ค.
- ์ด๋ ๊ธฐ๋ก ์์๋ ์ค์ํ์ง ์์ผ๋ฏ๋ก HashMap<String, Integer>์ ์ ๊ณ ํ์๋ฅผ ๊ธฐ๋กํด์ค๋ค.
reported | cnt |
muzi | 1 |
frodo | 2 |
apeach | 0 |
neo | 2 |
3. ์ ๊ณ ์๋ค์๊ฒ ๋ฉ์ผ์ ๋ณด๋ธ๋ค.
- ์ ๊ณ Map์ ๋๋ฉด์ ๋ณธ์ธ์ด ์ ๊ณ ํ ์ฌ๋๋ค ์ค์ ์ ์ง ๊ธฐ์ค์ ๋์ ์ฌ๋์ด ์๋์ง ํ์ธํ๋ค.
- ๋ง์ฝ, ์ ์ง๋ ์ฌ๋์ด ์์ผ๋ฉด ์นด์ดํธ ํด์ค ๋ค, answer[]๋ฐฐ์ด์ ๊ธฐ๋กํ๋ค.
import java.util.*;
class Solution {
public int[] solution(String[] id_list, String[] report, int k) {
// ๋๊ฐ ๋๊ตฌ๋ฅผ ์ ๊ณ ํ๋์ง ์ ์ฅ ex) muzi(์ ๊ณ ์) - frodo, neo(์ ๊ณ ๋นํ์)
LinkedHashMap<String, ArrayList<String>> map = new LinkedHashMap<>();
// ๋๊ฐ ๋ช๋ฒ ์ ๊ณ ๋ฅผ ๋นํ๋์ง ์ ์ฅ ex) muzi - 1 (muzi๊ฐ 1๋ฒ ์ ๊ณ ๋นํจ)
HashMap<String, Integer> reports = new HashMap<>();
for(String id : id_list){
map.put(id, new ArrayList<String>());
}
for(String s : report){
StringTokenizer st = new StringTokenizer(s);
String reporter = st.nextToken();
String reported = st.nextToken();
ArrayList<String> tmp = map.get(reporter);
// ์ ๊ณ ํ ์ฌ๋๊ณผ ์ ๊ณ ๋นํ ์ฌ๋ ์ ๋ณด ์ ์ฅ
if(!tmp.contains(reported)){ // ์ ๊ณ ์ค๋ณต ๊ฒ์ฌ
tmp.add(reported);
map.put(reporter, tmp);
// ์ ๊ณ ๋นํ ์ฌ๋ ํ์ ๋์ ํ๊ธฐ
reports.put(reported, reports.getOrDefault(reported, 0) + 1);
}
}
// ๋ฉ์ผ ๋ฐ์ ํ์ ์ ์ฅ
int[] answer = new int[id_list.length];
int i = 0;
for(String s : map.keySet()){
// ๋ณธ์ธ์ด ์ ๊ณ ํ ์ฌ๋ ๋ฆฌ์คํธ
ArrayList<String> tmp = map.get(s);
int cnt = 0;
for(String reported : tmp){
// ์ ๊ณ ํ ์ฌ๋๋ค ์ค, ์ ์ง ๊ธฐ์ค์ ๋๋ ์ฌ๋์ด ์์ผ๋ฉด ์นด์ดํธ
if(reports.get(reported) >= k){
cnt++;
}
}
answer[i++] = cnt;
}
return answer;
}
}
'Algorithm > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Programmers] ์คํ/ํ : ์ฃผ์๊ฐ๊ฒฉ JAVA (0) | 2022.07.05 |
---|---|
[Programmers] 2021 ์นด์นด์ค ์ฑ์ฉ์ฐ๊ณํ ์ธํด์ญ : ๊ฑฐ๋ฆฌ๋๊ธฐ ํ์ธํ๊ธฐ JAVA (0) | 2022.07.01 |
[Programmers] ๋ค์ ํฐ ์ซ์ - JAVA (๋ฌธ์์ด ์ฒ๋ฆฌ) (0) | 2022.05.20 |
[Programmers] ๋ ๋ฐ๋จน๊ธฐ - JAVA (Dynamic Programming) (0) | 2022.05.19 |
[Programmers] ์ฌ๋ฐ๋ฅธ ๊ดํธ - JAVA (์คํ) (0) | 2022.05.19 |
Comments