반응형
https://www.acmicpc.net/problem/10546
풀이
Map을 이용해서 풀었더니 처음엔 출력 초과가 발생했다. 이유는 동명이인이였다.
동명이인 문제를 해결하기 위해서 참가 선수 이름을 입력해줄 때 Map에 이미 들어있는 이름이라면 value 값을 1 추가해줬다.
for (int i=0; i<n; i++) {
String person = sc.next();
if (hm.containsKey(person)) {
hm.put(person, hm.get(person)+1);
} else {
hm.put(person, 1);
}
}
이후에 완주한 선수들의 value 값을 1씩 더해주면 된다. 그렇다면 완주한 사람의 value 값은 짝수가 되기때문에 value 값이 홀수인 인원을 출력하면 된다.
for (String p : hm.keySet()) {
if (hm.get(p) % 2 == 1) {
System.out.println(p);
}
}
<최종코드>
package TT;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class Main {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
Map<String, Integer> hm = new HashMap<>();
for (int i=0; i<n; i++) {
String person = sc.next();
if (hm.containsKey(person)) {
hm.put(person, hm.get(person)+1);
} else {
hm.put(person, 1);
}
}
for (int i=0; i<n-1; i++) {
String winner = sc.next();
hm.put(winner, hm.get(winner)+1);
}
for (String p : hm.keySet()) {
if (hm.get(p) % 2 == 1) {
System.out.println(p);
}
}
}
}
반응형
'알고리즘 > 구현 & 그리디 & 브루트포스' 카테고리의 다른 글
[백준]JAVA - 13305번: 주유소 (0) | 2022.09.16 |
---|---|
[백준]JAVA - 1931번: 회의실 배정 (0) | 2022.09.16 |
[백준]JAVA - 1541번: 잃어버린 괄호 (0) | 2022.09.15 |
[백준]JAVA - 2309번: 일곱 난쟁이 (0) | 2022.09.13 |
[백준]JAVA - 10872번 팩토리얼 (0) | 2022.07.20 |