문제 풀이/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했다.

 

* 전체 코드