https://school.programmers.co.kr/learn/courses/30/lessons/258712
문제
풀이
생구현이다.
진짜 말그대로 각 받은 선물, 준 선물을 표시한 뒤 선물 지수를 구하고
이후 서로 비교하여 누가 받는지를 계산한다
아니 근데 lv.1인데 난이도 차이 왜이래
구현하는데 35분 걸렸다 하...
코드
import java.util.*;
class Solution {
public int solution(String[] friends, String[] gifts) {
int[][] graph = new int[friends.length][friends.length];
int[] giftScore = new int[friends.length];
HashMap<String, Integer> map = new HashMap<>();
for(int i=0; i<friends.length; i++){
map.put(friends[i], i);
}
StringTokenizer st;
for(int i=0; i<gifts.length; i++){
st = new StringTokenizer(gifts[i]);
graph[map.get(st.nextToken())][map.get(st.nextToken())]++;
}
for(int i=0; i<friends.length; i++){
int give = 0;
for(int j=0; j<graph.length; j++){
give += graph[map.get(friends[i])][j];
}
int get = 0;
for(int j=0; j<graph.length; j++){
get += graph[j][map.get(friends[i])];
}
giftScore[map.get(friends[i])] = give-get;
}
int[] result = new int[friends.length];
int max = 0;
for(int a=0; a<friends.length; a++){
int now = map.get(friends[a]);
for(int i=0; i<graph.length; i++){
if(now==i) continue;
if(graph[now][i]>graph[i][now]) result[now]++;
else if(graph[now][i]<graph[i][now]) result[i]++;
else{
if(giftScore[now]>giftScore[i]) result[now]++;
else if(giftScore[now]<giftScore[i]) result[i]++;
else continue;
}
}
}
for(int i=0; i<result.length; i++){
max = Math.max(result[i], max);
}
return max/2;
}
}