문제설명 )
풀이 CODE )
더보기
import java.util.HashMap;
class Solution { //두 개의 문자열 배열을 비교하여 중복되지않는 1개의 문자열 리턴
public String solution(String[] participant, String[] completion) {
String answer = "";
//두개의 문자열 index 에 +1또는 -1을 해줄 Hash 선언
HashMap<String, Integer> cnt = new HashMap<>();
//participant 의 인덱스에 맞춰 +1
for (String player : participant) {
//getOrDefault 를 통하여 중복 검사
cnt.put(player, cnt.getOrDefault(player, 0) + 1);
}
//completion 의 인덱스에 맞춰 -1
for (String player : completion) {
cnt.put(player, cnt.get(player) - 1);
}
//+1과 -1이 만나면 0 이된다. 그렇지 않은 인덱스에있는 값을 answer에 대입
for (String ans : cnt.keySet()) {
if (cnt.get(ans) != 0) {
answer = ans;
}
}
return answer;
}
}
풀이법 )
1. 두 개의 문자열 배열을 비교하여 중복되지않는 1개의 문자열을 리턴하면 되는 문제이다.
2. Hash를 사용하는 문제이므로, 두개의 문자열 비교를 위한 HashMap 선언
3. HashMap에 각각 배열의 길이에 맞게 인덱스에 +1 -1을 해준다.
4. HashMap에 저장된 Value를 for문으로 확인하여 0이 아닌 곳의 값을 answer에 담아 Return;
2021.11.11 재풀이 코드
더보기
import java.util.*;
class Solution {
public String solution(String[] participant, String[] completion) {
String answer = "";
Arrays.sort(participant);
Arrays.sort(completion); // 비교를 빠르게 하기위해 둘다 정렬
for(int i=0; i<completion.length; i++) {
// 정렬된 배열에서 완주자와 참가자가 같지않으면 완주하지 못한걸로 확인
if(!participant[i].equals(completion[i])) {
return participant[i];
}
// 완주자 인덱스만큼 체크했지만, 없으면 마지막 참가자 리턴
if(i==completion.length-1) {
answer = participant[i+1];
}
}
return answer;
}
}
'알고리즘 > Programmers' 카테고리의 다른 글
[Programmers] Level1. 2016년 (Java) (0) | 2021.01.02 |
---|---|
[Programmers] Level1. K번째 수 (Java) (0) | 2021.01.01 |
[Programmers] Level1. 체육복 (Java) (0) | 2020.12.28 |
[Programmers] Level1. 모의고사 (Java) (0) | 2020.12.26 |
두 개 뽑아서 더하기 (0) | 2020.12.08 |