백준 - 10546번(배부른 마라토너)

최지홍·2022년 2월 14일
0

백준

목록 보기
59/145

문제 출처: https://www.acmicpc.net/problem/10546


문제

  • 마라토너라면 국적과 나이를 불문하고 누구나 참가하고 싶어하는 백준 마라톤 대회가 열린다. 42.195km를 달리는 이 마라톤은 모두가 참가하고 싶어했던 만큼 매년 모두가 완주해왔다. 단, 한 명만 빼고!

  • 모두가 참가하고 싶어서 안달인데 이런 백준 마라톤 대회에 참가해 놓고 완주하지 못한 배부른 참가자 한 명은 누굴까?


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(reader.readLine());

        StringBuilder sb = new StringBuilder();

        HashMap<String, Integer> hashMap = new HashMap<>();

        for (int i = 0; i < N; i++) {
            String temp = reader.readLine();

            if (hashMap.containsKey(temp)) hashMap.put(temp, hashMap.get(temp) + 1);
            else hashMap.put(temp, 1);
        }

        for (int i = 0; i < N - 1; i++) {
            String temp = reader.readLine();
            hashMap.put(temp, hashMap.get(temp) - 1);
        }

        for (String str : hashMap.keySet()) {
            if (hashMap.get(str) > 0) sb.append(str).append("\n");
        }

        System.out.println(sb);
    }

}

  • 처음에는 ArrayList로 풀었다가 시간초과가 나왔다.
  • HashMap을 응용하여 key로 이름을 주고, value는 1씩 처음에 주었다. 그런데 동명이인이 있을 수 있으므로 같은 key의 입력이 들어오면 value를 1 증가한다.
  • 완주자 목록을 참고하여 key로 HashMap을 탐색하여 value 값을 1 감소하고, 최종적으로 HashMap을 탐색하여 value가 0 초과인 사람들의 이름을 출력한다.
profile
백엔드 개발자가 되자!

0개의 댓글