레벨 1
https://programmers.co.kr/learn/courses/30/lessons/42576
풀이 1) 해시를 사용해 푸는 방법
participant를 반복문으로 돌리며, 해시에 key로 넣고 동명이인을 처리하도록 value에 개수도 넣어준다.
completion을 반복문으로 돌리며, 원소가 해시에 포함되는 키일 때 map의 value를 감소시킨다.
map을 반복문으로 돌리며 value가 0 이 아니라면 value가 0이 아닌 key를 출력한다 = 완주하지 못한 선수
// 방법 1) 해시를 사용해 푸는 방법
public String solution(String[] participant, String[] completion) {
String answer = "";
HashMap<String, Integer> map = new HashMap<>();
for (String arg : participant) {
map.put(arg, map.getOrDefault(arg, 0) + 1);
}
for (String arg : completion) {
map.put(arg, map.get(arg) - 1);
}
for (String key : map.keySet()) {
if (map.get(key) != 0)
return key;
}
return null;
}
풀이 2) 해시를 사용하지 않고 푸는 방법
정렬을 이용해서 문제를 해결했다.
두 배열을 정렬하고 같은 인덱스에 해당하는 값이 다를 때 값을 출력하도록 했다.
다만 같은 인덱스에 해당 값이 모두 동일할 경우 participant의 마지막 값이 완주하지 못한 선수이므로 처리
// 방법 2) 해시를 사용하지 않고 푸는 방법
public String solution2(String[] participant, String[] completion) {
String answer = "";
Arrays.sort(participant);
Arrays.sort(completion);
for(int i=0;i<participant.length-1;i++){
if(!participant[i].equals(completion[i])){
answer = participant[i];
break;
}
}
if(answer.equals("")){
answer = participant[participant.length-1];
}
return answer;
}
package 해시;
import java.util.*;
public class 완주하지못한선수 {
// 방법 1) 해시를 사용해 푸는 방법
public String solution(String[] participant, String[] completion) {
String answer = "";
HashMap<String, Integer> map = new HashMap<>();
for (String arg : participant) {
map.put(arg, map.getOrDefault(arg, 0) + 1);
}
for (String arg : completion) {
map.put(arg, map.get(arg) - 1);
}
for (String key : map.keySet()) {
if (map.get(key) != 0)
return key;
}
return null;
}
// 방법 2) 해시를 사용하지 않고 푸는 방법
public String solution2(String[] participant, String[] completion) {
String answer = "";
Arrays.sort(participant);
Arrays.sort(completion);
for(int i=0;i<participant.length-1;i++){
if(!participant[i].equals(completion[i])){
answer = participant[i];
break;
}
}
if(answer.equals("")){
answer = participant[participant.length-1];
}
return answer;
}
}
https://junghn.tistory.com/entry/알고리즘-프로그래머스-완주하지-못한-선수-해시-1