• 문제 링크
10546번: 배부른 마라토너
마라토너라면 국적과 나이를 불문하고 누구나 참가하고 싶어하는 백준 마라톤 대회가 열린다. 42.195km를 달리는 이 마라톤은 모두가 참가하고 싶어했던 만큼 매년 모두가 완주해왔다. 단, 한 명
www.acmicpc.net
• 풀이 과정
참가자 중 동명이인이 있을 수 있다는 조건에 의해 set이 아닌 map을 활용한다.
각 참가자의 이름을 key로 map에 저장하되, 동명이인이라면 value를 증가시켜 처리한다.
완주자의 이름을 입력받고 해당 완주자가 map에 존재한다면 해당 value를 감소시키고,
만약 value가 0이라면 해당 이름의 참가자는 모두 완주를 했으므로 map에서 제거한다.
위의 과정을 거쳐 map에 잔존하는 1개의 이름을 정답으로써 출력한다.
• 풀이 코드
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(br.readLine());
Map<String, Integer> map = new HashMap<>();
for (int i = 0; i < n; i++) {
String input = br.readLine();
map.put(input, map.getOrDefault(input, 0) + 1);
}
while (n-- > 1) {
String input = br.readLine();
map.put(input, map.get(input) - 1);
if (map.get(input) == 0)
map.remove(input);
}
bw.write(String.valueOf(map.keySet().iterator().next()));
bw.flush();
}
}
'Problem Solving > Baekjoon' 카테고리의 다른 글
[백준] 9322 철벽 보안 알고리즘 - Data Structure / Java (0) | 2023.03.20 |
---|---|
[백준] 4158 CD - Data Structure / Java (0) | 2023.03.19 |
[백준] 1235 학생 번호 - Data Structure / Java (0) | 2023.03.17 |
[백준] 17608 막대기 - Data Structure / Java (0) | 2023.03.16 |
[백준] 12605 단어순서 뒤집기 - Data Structure / Java (0) | 2023.03.15 |
댓글