728x90
화이트씨는 다재다능한 사람입니다(모든 것이 그의 관심 대상입니다.) 그래서 그에게는 친구가 많습니다.
하지만 불행하게도 그의 친구들은 다재다능하지 않습니다. 각각의 친구는 2가지 주제에만 관심이 있고 다른 주제로 이야기하는 것을 싫어합니다. 그래서 파티를 개최할 때마다 모두가 즐겁게 파티를 보내려면 어떤 친구를 초대할지가 큰 문제입니다. 화이트씨는 그 동안의 경험으로 초대된 친구 모두가 공통의 흥미 있는 화제가 있을 때 파티를 즐긴다는 것을 알았습니다.
문자열 배열 first, second가 주어집니다. 화이트씨의 i번째 친구가 흥미 있는 화제는 first[i]와 second[i]입니다. 즐거운 파티가 되려면 화이트씨가 초대할 수 있는 친구는 최대 몇 명인지 리턴하세요.
문제 파악하기
1. first 취미와 second 취미는 항상 다르다.
즉, 각각의 취미가 n번 언급되면 n명의 다른 친구들의 취미인 것이다.
2. Dictionary 사용하기 (key=hobby, value=count)
first 취미와 second 취미를 같은 Dictionary에 key값으로 담는다.
또 선언되면 value인 count값에 1을 더한다.
3. 제일 큰 value값 찾기
value가 몇 명이 그 취미(key)가 가능한지 나타내므로, max value값이 답이다.
위 순서대로 코드를 짜면 아래와 같다.
(C#)
private static int Solution(string[] first, string[] second)
{
Dictionary<string, int> hobbyCnt = new Dictionary<string, int>();
for (int i=0; i<first.Length; i++)
{
if (hobbyCnt.ContainsKey(first[i])) hobbyCnt[first[i]]++;
else hobbyCnt.Add(first[i], 1);
}
for (int i = 0; i < second.Length; i++)
{
if (hobbyCnt.ContainsKey(second[i])) hobbyCnt[second[i]]++;
else hobbyCnt.Add(second[i], 1);
}
int maxNum = 1;
foreach (int s in hobbyCnt.Values)
{
if (s > maxNum) maxNum = s;
}
return maxNum;
}
(Java)
import java.util.*;
public class InterestingParty {
public int bestInvitation(String[] first, String[] second) {
HashMap<String, Integer> hobby = new HashMap<>();
for (int i = 0; i < first.length; i++) {
if (hobby.containsKey(first[i])) {
hobby.put(first[i], hobby.get(first[i]) + 1);
} else {
hobby.put(first[i], 1);
}
}
for (int i = 0; i < second.length; i++) {
if (hobby.containsKey(second[i])) {
hobby.put(second[i], hobby.get(second[i]) + 1);
} else {
hobby.put(second[i], 1);
}
}
int maxCnt = 1;
for (int i : hobby.values()) {
if (i > maxCnt) {
maxCnt = i;
}
}
return maxCnt;
}
}
728x90
'Algorithm Study > TopCoder' 카테고리의 다른 글
[TopCoder] AdditionGame (Java) (0) | 2023.08.14 |
---|---|
[TopCoder] 회문 (Java, C#) (0) | 2023.08.13 |
[TopCoder] InterestingDigits (Java, C#) (0) | 2023.08.12 |
[TopCoder] Cryptography (C#, Java) (0) | 2023.08.12 |
[TopCoder] KiwiJuiceEasy (C#, Java) (4) | 2023.08.10 |