Programmers 코테 문제 1 (기초)

오해성·2021년 2월 15일
0

코딩 테스트

목록 보기
1/1

최근에 코딩 테스트 문제를 꾸준히 풀어보고자 마음 먹고 programmers 문제들을 풀기 시작했습니다. 이전에도 몇번씩 풀어본 적은 있지만 조금씩 깔짝였던게 다여서 이번에는 각잡고 풀어보기로 했습니다. 코딩 테스트가 막상 풀어 보려하니 어려운 점들이 많은 것 같아서 레벨 1 부터 천천히 진행 할 예정이고 이번 게시글에서는 그 중 한 문제에 대해 복습하도록 하겠습니다.

완주 하지 못한 선수

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

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

제한사항

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

입출력 예

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

해당 문제는 어떻게 접근하는지 깨닫고 나서 부터는 쉽게 문제를 풀 수 있었습니다.

쉽게 생각해서 participant 중 completion에 해당 되지 않는 친구를 골라 답안으로 return하면 되는 문제 였습니다.

그러기 위해서는 둘을 비교 해야하는데 그냥 비교 해버리면 비교 할 수 없기 때문에 두 배열 모두 sort로 정렬을 시켜 주었습니다.

sort로 정렬 시킨 후에는 for문으로 participant의 length만큼 루프를 돌아, 두 배열의 값들을 비교해 주었습니다. 비교한 후에 서로 다른 값이 나온다면 해당 값은 completion에 해당 되지 않는 선수로, 답안이 나오게 됩니다.

처음에는 sort로 정렬을 시키고 시작하자는 생각을 못해서 하나하나 비교해 가며 찾으려 했습니다. 그러다 completion의 값들도 결국 전부 participant의 값들에 포함 되어 있음을 깨닫고 sort로 정렬 시키면 같은 순서로 나오겠구나 싶어서 sort로 정렬 시켰고, 그 후 부터는 쉽게 풀 수 있었습니다.

답안

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

    return answer;
}

0개의 댓글