개발자가 된 감자

[프로그래머스] Lv.1 완주하지 못한 선수 본문

Coding Test/프로그래머스

[프로그래머스] Lv.1 완주하지 못한 선수

감자씨 2024. 11. 17. 20:51
728x90

programmers_logo

마라톤에 참여한 선수들의 이름이 담긴 배열 participant
완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하기.



1. 변수 초기화

 String answer = "";
 Map<Integer, String> nameMap = new HashMap<>(); // 완주한 선수들의 이름을 담을 map

 

2. 완주한 선수들의 이름이 담긴 배열 오름차순 정렬

Arrays.sort(completion);

 

3. completion 배열 값을 key : index, value : 이름 형태로 map에 담기

for(int i=0; i<completion.length; i++){
    nameMap.put(i, completion[i]);
}

 

4. 전체 선수의 이름이 담긴 배열 오름차순 정렬

Arrays.sort(participant);

 

5. 완주한 선수들의 이름이 담긴 map에 해당 이름이 없거나, for문의 마지막 인덱스일 경우,
해당 이름을 return 후 break

for(int i=0; i<participant.length; i++){
    if(i == (participant.length-1) || !nameMap.get(i).equals(participant[i])) {
        answer = participant[i];
        break;
    }
}

 

 

전체 코드

import java.util.*;

class Solution {
    public String solution(String[] participant, String[] completion) {
        String answer = "";
        Map<Integer, String> nameMap = new HashMap<>();
        
        Arrays.sort(completion);
        for(int i=0; i<completion.length; i++){
            nameMap.put(i, completion[i]);
        }
        
        Arrays.sort(participant);
        for(int i=0; i<participant.length; i++){
            if(i == (participant.length-1) || !nameMap.get(i).equals(participant[i])) {
                answer = participant[i];
                break;
            }
        }
        
        return answer;
    }
}

 

 

 

더 좋은 코드가 떠오르시면 댓글에 공유해주세요 !

728x90
Comments