Arrays.sort(participant)
, Arrays.sort(completion)
!participant[i].equals(completion[i])
인 인덱스를 찾는다participant[i]
를 return해준다import java.util.Arrays;
class Solution {
public String solution(String[] participant, String[] completion) {
// String answer = "";
Arrays.sort(participant);
Arrays.sort(completion);
int i;
for(i = 0; i < completion.length; i++) {
if (!participant[i].equals(completion[i])) {
break;
}
}
return participant[i];
}
}
import java.util.HashMap;
class Solution {
public String solution(String[] participant, String[] completion) {
String answer = "";
HashMap<String, Integer> hm = new HashMap<>();
for (String player : participant) hm.put(player, hm.getOrDefault(player, 0) + 1);
for (String player : completion) hm.put(player, hm.get(player) - 1);
for (String key : hm.keySet()) {
if (hm.get(key) != 0){
answer = key;
}
}
return answer;
}
}
다른 사람 풀이를 보니 정석은 HashMap을 이용해서 푸는 것이었다고 한다.
hm.getOrDefault(key, DefaultValue)
를 사용한 이유는 동명이인을 중복 체크하기 위해서이다.
hm.getOrDefault(key, DefaultValue)
찾는 key가 존재한다면 key의 value를 반환하고, 없다면 DefaultValue 반환
hm.put(player, 1)
을 사용했다면 동명이인이 나왔을 때, 기존 key에 새로운 value를 줘서 동명이인이이 있더라도 value가 계속 1이 나오게 된다.
예시
participant - A C B A D
completion - B A C A
HashMap<String, Integer> hm = new HashMap<>();
for (String player : participant) {
hm.put(player, hm.getOrDefault(player, 0) + 1);
}
key value
A 2
C 1
B 1
D 1
HashMap<String, Integer> hm = new HashMap<>();
for (String player : completion) {
hm.put(player, hm.get(player) - 1);
}
key value
A 0
C 0
B 0
D 1
완주하지 못한 key값 "D"만 value에 1이 남게 된다.
Map의 일종으로 key와 두개의 value로 이루어진 데이터를 보관한다.
Map - key:value 구조(key는 중복X, value는 중복 가능)
사용법
import java.util.HashMap;
public class HashMap {
public static void main(String[] args) {
// 해시맵 선언 - HashMap<타입, 타입> 변수 = new HashMap<타입, 타입>()
HashMap<String, String> hm = new HashMap<String, String>();
// 값 추가
hm.put("1", "First");
hm.put("2", "Second");
System.out.println(hm)
// 결과값 - {1=First, 2=Second}
// 값 삭제
hm.remove("1");
System.out.println(hm)
// 결과값 - {2=Second}
// 값 출력하기
for (Map.Entry<String, String> e : hm.entrySet()) {
System.out.prinln(e.getKey(), e.getValue());
}
// 결과값 - 2, Second
}
}