문제 풀이/Algorithm
[Programmers] Hash - 완주하지 못한 선수
soom2628
2020. 7. 8. 09:52
언어: JAVA
1. 풀이 과정
이 문제는 참여자 명단과 완주자 명단을 정렬하여 두 명단의 같은 index의 값을 비교하여 해결할 수 있다.
만약 참여자 명단에 있는 모든 사람이 완주자 명단에도 있다면?? 배열을 정렬했을 때, 두 배열은 완벽히 같을 것이다.
(같은 index의 값이 모두 같다!)
따라서 같은 index의 값만 비교해 준다면 누가 완주하지 못했는지 알 수 있다!
-
참여자 명단
0 |
1 |
2 |
"eden" |
"kiki" |
"leo" |
-
완주자 명단
0 |
1 |
"eden" |
"kiki" |
위의 두 표는 첫 번째 입출력 예의 참여자 명단과 완주자 명단을 정렬한 결과다(index와 값).
얼핏 봐도 index 0 과 index 1 의 값은 두 배열이 같은데 index 2 의 값은 참여자 명단에만 존재한다!
따라서 “leo”는 참여만했지 완주하지 못한 것이다!!
2. 주요 코드
import java.util.*;
class Solution {
public String solution(String[] participant, String[] completion) {
Arrays.sort(participant);
Arrays.sort(completion);
int i;
for(i=0; i<completion.length; i++){
if(!participant[i].equals(completion[i])){
return participant[i];
}
}
return participant[i];
}
}
Arrays.sort() 로 두 배열을 정렬한 후, for문 을 이용하여 두 배열의 index의 값을 비교하여 두 값이 다를 때 그 값을 return했다.
* 전체 코드