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

정선모·2022년 1월 20일
0

프로그래머스

목록 보기
21/91

문제설명 :
수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다.
마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요.

제한사항 :

  • 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다.
  • completion의 길이는 participant의 길이보다 1 작습니다.
  • 참가자의 이름은 1개 이상 20개 이하의 알파벳 소문자로 이루어져 있습니다.
  • 참가자 중에는 동명이인이 있을 수 있습니다.
  • sort 메소드와 equals 메소드의 사용법을 인지하고, 조건문 설정을 적절하게 해서 해결한 문제였습니다. 효율성 검사에서 실패하는 경우가 꽤 있었는데, 반복문에서 해당조건 발견하면 바로 종료하는 것으로 해결하였습니다.

    import java.util.Arrays;
    // Arrays 클래스를 사용하기 위해 임포트한다.
    
    class Solution {
        public String solution(String[] participant, String[] completion) {
            String answer = "";
            Arrays.sort(participant);
            Arrays.sort(completion);
            //Arrays 클래스의 sort 메소드를 사용하여
            //participant(이하p)와 completion(이하c)를 사전적 순서로 내림차순 정렬한다.
            
            for(int i=0; i<participant.length; i++){
                if(i == participant.length-1){
                    // i가 participant.length-1(반복문의 마지막 회문) 일때
                    answer = participant[i];
                    // 완주 못한 순서는 해당순서의 배열값이 된다.
                    // c배열이 p배열보다 길이가 1아서 대조할수 있는 값이 없기때문이다.
                    break;
                }else if(!participant[i].equals(completion[i])){
                    // equals 메소드를 사용하여 p의값이 c의값과 일치하지 않는경우를 찾는다. 
                    answer = participant[i];
                    // 일치하지 않는경우 answer = p의 현재 배열 값
                    break;
                    // 1명을 찾았기에 더 회문할 필요가 없다. break;
                }
            }
            return answer;
        }
    }

    [프로그래머스] 완주하지 못한 선수 링크

    풀이에 도움이 된 링크
    https://coding-grandpa.tistory.com/entry/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EC%99%84%EC%A3%BC%ED%95%98%EC%A7%80-%EB%AA%BB%ED%95%9C-%EC%84%A0%EC%88%98-%ED%95%B4%EC%8B%9C-Lv-1

    profile
    개발자가 되어가는 비전공자

    0개의 댓글