반응형
문제
https://school.programmers.co.kr/learn/courses/30/lessons/258712
문제 내용은 지적 재산 보호 차원에서 가져오지 않고 풀이만 공유드리도록 하겠습니다.
풀이
제 풀이가 무조건적으로 맞는 것도 최적의 답변도 아니지만, 이런 풀이도 있다는 차원에서 작성해 보며, 좀 더 나은 방법이 있다면 이야기해 주셔도 도움 될 것 같습니다.
import java.util.HashMap;
class Solution {
public int solution(String[] friends, String[] gifts) {
// 1. 기본 데이터 생성
HashMap<String, HashMap<String, Integer>> map = new HashMap<String, HashMap<String, Integer>>();
for(String from:friends){
HashMap<String, Integer> friend = new HashMap<String, Integer>();
for(String to:friends){
friend.put(to, 0);
}
friend.put("tot", 0);
map.put(from, friend);
}
// 2. 선물 횟수 / 선물 지수 데이터 생성
for(String gift:gifts){
String from = gift.split(" ")[0];
String to = gift.split(" ")[1];
// 선물 준 사람 데이터 세팅 (대상 / 지수)
map.get(from).put(to, map.get(from).get(to) + 1);
map.get(from).put("tot", map.get(from).get("tot") + 1);
// 받은 사람 데이터 세팅 (대상 / 지수)
map.get(to).put(from, map.get(to).get(from) - 1);
map.get(to).put("tot", map.get(to).get("tot") - 1);
}
// 3. 결과 도출
int answer = 0;
String answerNm = "";
for(String from:friends){
int gift = 0; // 다음달에 받을 총 개수
for(String to:friends){
// 본인이 아닌 경우
if(!from.equals(to)){
int send = map.get(from).get(to);
int recv = map.get(to).get(from);
if(send > recv){
// 준 횟수가 많으면 +1
gift++;
}else if(send == recv && map.get(from).get("tot") > map.get(to).get("tot")){
// 준 횟수가 같고 선물지수가 높으면 +1
gift++;
}else{
// 그 외 처리 안함
}
}
}
// 현재 까지의 최대 수령자 보다 값이 높으면 최대 수령자 갱신
if(answer < gift){
answer = gift;
answerNm = from;
}
}
// System.out.println(answerNm + " > " + answer);
return answer;
}
}
반응형
'개발 창고 > Algorithm' 카테고리의 다른 글
[프로그래머스] PCCE 기출문제 10번 / 데이터 분석 - JAVA (144) | 2024.01.18 |
---|---|
[ALGORITHM] QUICK SORT (129) | 2024.01.11 |
[프로그래머스] PCCE 기출문제 9번 / 이웃한 칸 - JAVA (103) | 2024.01.09 |
[프로그래머스] 마지막 두 원소 - JAVA (135) | 2024.01.06 |
[프로그래머스] PCCP 기출문제 1번(붕대감기) (0) | 2023.12.08 |