취업 및 이직 준비/코딩테스트 준비
프로그래머스 - 완주하지 못한 선수 - 자바 - 코딩테스트 준비
code2772
2023. 3. 23. 10:56
728x90
반응형
✔ HashMap
import java.util.*;
class Solution {
public String solution(String[] participant, String[] completion) {
String answer = "";
Map<String, Integer> map = new HashMap<>();
for (String p : participant) {
map.put(p, map.getOrDefault(p, 0) +1);
}
for (String c : completion){
map.put(c, map.get(c) -1);
}
for (String key : map.keySet()){
if(map.get(key) != 0){
answer = key;
break;
}
}
return answer;
}
}
1. Map을 사용하여 String, Integer로 구분한다.
2. participant의 배열에 있는것들을 1로 바꿔준다.
3. completion에 있는 것을 -1로 바꿔 둘이 겹치는 것을 +1 -1 해서 0으로 변경
4. map,keySet을 이용해서 0이 아닌것 즉 서로 다른것을 반환한다.
5. 그럼 원하는 답이 리턴된다.
✔ 배열
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])){
continue;
}else{
return participant[i];
}
}
return participant[participant.length-1];
}
}
1. Arrays.sort( ) 를 이용하여 배열 2개를 정렬한다. 비교하기 위해서 이다.
2. completion 길이만큼 반복을 돌린다.
3. if문으로 두개의 배열에서 각 동일 내용이 있으면 그저 넘기고 아닌것을 리턴한다.
4. 최종 리턴은 participant의 참가자 길이의 -1을 하면 첫번째 0 차이는 1개이기 때문에 나오게 된다.
반응형