https://www.acmicpc.net/problem/10546
import java.util.*;
public class Main {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
// 참가자와 완주자 배열 생성
String [] participant = new String[N];
String [] completion = new String[N-1];
for(int i=0; i<N; i++){
participant[i] = sc.next();
}
for(int i=0; i<N-1; i++){
completion[i] = sc.next();
}
String answer = ""; // 답
HashMap<String, Integer> map = new HashMap<>(); // HashMap 생성
for(int i=0; i<participant.length; i++){
//이미 있는 이름의 키값이라면 해당 value 값에 + 1
//없는 이름의 키값이라면 value값에 1 저장
map.put(participant[i], map.get(participant[i])==null?1:map.get(participant[i])+1);
}
//완주자 배열과 비교
for(int i=0; i<completion.length; i++){
//완주자 이름이 hashmap에 포함되어있으면 해당 value값 - 1
if(map.containsKey(completion[i]))
map.replace(completion[i], map.get(completion[i])-1);
}
//value값이 0이 아닌 key값 출력
for(String key : map.keySet()){
if(map.get(key)!=0){
answer = key;
System.out.println(answer);
return;
}
}
}
}
왜인지는 모르겠으나 참가자와 완주자의 이름을 배열에 저장하지 않고 바로 hashmap에 저장, 비교 했을때보다 배열에 저장했을때가 메모리도 덜 차지하고 속도도 더 빨랐다.
'코딩테스트 > 백준' 카테고리의 다른 글
[백준-자바] 2164번 카드2 / 2022.07.16 (0) | 2022.07.16 |
---|---|
[백준-자바] 11866번 요세푸스 문제 0 / 2022.07.16 (0) | 2022.07.16 |
[백준-자바] 7795번 먹을 것인가 먹힐 것인가 / 2022.06.04 (0) | 2022.06.04 |
[백준-자바] 11728번 배열 합치기 / 2022.06.04 (0) | 2022.06.04 |
[백준-자바] 2003번 수들의 합 2 / 2022.06.04 (0) | 2022.06.04 |