본문 바로가기
코딩 테스트/[JAVA] programmers 코딩 테스트 연습

[Programmers/JAVA] 완주하지 못한 선수 / 프로그래머스 코딩 테스트 연습

by M개발자 2021. 7. 12.
반응형

완주하지 못한 선수

 


문제 설명

 

수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다.

마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요.


예시

 

participant completion return
["leo", "kiki", "eden"] ["eden", "kiki"] "leo"
["marina", "josipa", "nikola", "vinko", "filipa"] ["josipa", "filipa", "marina", "nikola"] "vinko"
["mislav", "stanko", "mislav", "ana"] ["stanko", "ana", "mislav"] "mislav"

코드 해석 및 전체 코드

 

1. 두 배열을 정렬한다.

2. 정렬된 배열의 요소가 같지 않을 경우 완주하지 못한 선수이므로, 그 선수 이름을 반환한다.

 

이름의 배열 위치를 같게 하기 위해서 두 배열을 정렬한다.

원래 배열은 

["mislav", "stanko", "mislav", "ana"]

["stanko", "ana", "mislav"]

 

정렬되어있지 않지만, 정렬을 할 시 

[ 'ana', 'mislav', 'mislav', 'stanko' ]
[ 'ana', 'mislav', 'stanko' ]

같은 위치에 같은 이름이 담길 수 있다. 

 

participant[2](= mislav)와 completion[2](= stanko)는 같지 않으므로 완주하지 못한 선수인 mislav를 찾을 수 있다.

mislav는 동명이인으로 조건에 동명이인이 있을 수 있다고 하지만 정렬을 할 시 동명이인의 조건은 무시해도 괜찮다. 

 

 

 

import java.util.Arrays;
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];
            }
        }
        
        return participant[participant.length-1];
    }
}

github

programmers

 

반응형

댓글