ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 완주하지 못한 선수
    TIL 2020. 9. 18. 08:03

    문제 설명

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

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

     

    제한사항

    • 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다.
    • completion의 길이는 participant의 길이보다 1 작습니다. -- 출력될 이름은 하나다.
    • 참가자의 이름은 1개 이상 20개 이하의 알파벳 소문자로 이루어져 있습니다. -- 정렬이 가능하다.
    • 참가자 중에는 동명이인이 있을 수 있습니다. --중복이 가능하다

    입출력 예

    participant                                                     completionreturn

    [leo, kiki, eden] [eden, kiki] leo
    [marina, josipa, nikola, vinko, filipa] [josipa, filipa, marina, nikola] vinko
    [mislav, stanko, mislav, ana] [stanko, ana, mislav] mislav

    제한사항과 입출력 예로 미루어 보아,

    참가자의 배열은 참가 순서대로 push로 밀어넣은 듯한 형태이고,

    완주자의 배열도 완주 순서대로 push로 밀어넣은 듯한 형태로 보인다.

     

    탈락자의 이름이 하나 일거라는 예상도 가능하다.

     

    중복된이름에서의 따로 구분은 없어도 될 것으로 보인다.

     

    두 배열 모두 정렬을 하게 되면 분명히 

    p = ["ana", "mislav", "mislav", "stanko"]

    c = ["ana", "mislav", "stanko"]

    알파벳순으로 정렬이 될 것이고, 그렇다면, 인덱스로 각배열의 i번재 element를 비교할 수 있는 상황이 된다.

     

    분기를 나누어서,

     

    반복문으로 더 길이가 긴 배열을 탐색했을때,

     

    각 인덱스의 엘리먼트가 동일하다면, 그렇지않다면 으로 나눌 수 있고,

     

    같다면, 반복문을 계속하고, 같지않다면, answer에 그 이름을 넣고, 반복문을 종료한다. 이렇게 생각 할 수 있던 이유는

    제한사항 2번 덕분에 가능했다.

     

    function solution(participant, completion) {
        var answer = '';
        
        participant.sort()
        completion.sort()
        
        for(let i=0; i<participant.length; i++){
            
            if(participant[i] ===  completion[i]){
                continue;
            }
                
            
            if(participant[i] !==  completion[i])
                answer = answer + participant[i]
                break;
        }
        
        return answer;
    }

    'TIL' 카테고리의 다른 글

    typeORM migration part - 01  (0) 2020.10.08
    sequelize ORM 날짜관련 해결문제.  (0) 2020.09.17
    socket.io  (0) 2020.09.16
    나누어 떨어지는 숫자 배열(프로그래머스)  (0) 2020.09.15
    두개 뽑아서 더하기(프로그래머스)  (0) 2020.09.15

    댓글

Designed by Tistory.