완주하지 못한 선수 Lv. 1

박영준·2022년 11월 21일
0

코딩테스트

목록 보기
20/300
class Solution {
    public String solution(String[] participant, String[] completion) {
        String answer = "";
        return answer;
    }
}

해결법

방법 1

import java.util.*;

class Solution {
    public String solution(String[] participant, String[] completion) {
        
        // 오름차순으로 정렬해줌으로써, 동일한 i번째 배열에 그 선수가 있는지 비교 가능
        Arrays.sort(participant);
        Arrays.sort(completion);   
        
        int i;
        for (i = 0; i < completion.length; i++) {
        	// participant와 completion가 같지 않은 경우, 그 i번째 participant를 반환
            if (!participant[i].equals(completion[i])) {
                return participant[i];
            }
        }
        
        // 'completion의 길이는 participant의 길이보다 1 작습니다.' 따라서 participant와 completion가 같은 경우, 마지막 participant를 반환
        return participant[i];
    }
}
  • for문 바깥에 i를 선언하는 이유?
    • 완주 못하는 선수가 participant배열의 마지막에 있을 경우,
      리턴해야 할 건 participant[마지막]이라서 for문 이후에 return participant[i] 에서 반환 (i < completion.length이므로)

방법 2

import java.util.*;

class Solution {
    public String solution(String[] participant, String[] completion) {
        
        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];		// 완주자 목록에 다른게 없다면 마지막 한 사람이므로 그 사람을 출력
    }
}

완주하지 못한 선수 Lv. 1

profile
개발자로 거듭나기!

0개의 댓글