보라코딩
프로그래머스 자바 :: 가장 많이 받은 선물 본문
오랜만에 코테...
1단계인데 문제가 엄청 길다...
너무 막막해서 30분 이상 고민하다가
해답을 보니 생각보다 엄청 어려운 문제는 아니였다.....
다만 생각해내는게 어렵지...
그래도 HashMap을 사용해야겠다는 점을 배울 수 있었다.
다른 사람 코드 보면서 한번 따라치고
이후엔 다시 스스로 생각해서 풀어봤다.
정말 갈길이 멀다...ㅎ
import java.util.*;
class Solution {
public int solution(String[] friends, String[] gifts) {
int answer = 0;
int len = friends.length;
HashMap<String, Integer> map = new HashMap<>();
int[] degree = new int[len]; // 선물지수
int[][] graph = new int[len][len];
// key-value로 친구 쉽게 찾기 위해 map 구성
for (int i = 0; i < len; i++){
map.put(friends[i], i);
}
for(String gift : gifts) {
String[] split = gift.split(" ");
// 선물 지수 : 선물을 주면 +, 선물을 받으면 -
degree[ map.get(split[0]) ]++;
degree[ map.get(split[1]) ]--;
// 4*4 gitf 그래프 구성
graph[ map.get(split[0]) ][ map.get(split[1]) ]++;
}
// 조건에 따른 선물 주고 받기
for (int i = 0; i < len; i ++) {
int num = 0;
for (int j = 0; j < len; j++) {
if ( i == j ) {
continue;
}
// 주고 받은 선물 많은 사람이 받기 또는 주고 받은게 같다면 선물지수가 큰 사람이 받기
if ( graph[i][j] > graph[j][i] ||
( graph[i][j] == graph[j][i] && degree[i] > degree[j] )
) {
num++;
}
}
if (answer < num){
answer = num;
}
}
return answer;
}
}
'프로그래머스 (java)' 카테고리의 다른 글
프로그래머스 자바 :: 달리기경주 (1단계) (0) | 2024.05.22 |
---|---|
프로그래머스 자바 :: PCCE 기출문제 10번 데이터 분석 (0) | 2024.05.20 |
프로그래머스 자바 :: 탐욕법 (0) | 2023.12.19 |
프로그래머스 자바 :: 완전탐색 (0) | 2023.12.11 |
프로그래머스 자바 :: 정렬 (1) | 2023.12.04 |