-
Level 1 | 완주하지 못한 선수 [해시]_JavaScriptCoding Test/Programmers Level 1 2020. 3. 12. 16:57
문제 설명
수많은 마라톤 선수들이 마라톤에 참여하였습니다.
단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다.
마라톤에 참여한 선수들의 이름이 담긴 배열 participant와
완주한 선수들의 이름이 담긴 배열 completion이 주어질 때,
완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요.
제한사항
- 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다.
- completion의 길이는 participant의 길이보다 1 작습니다.
- 참가자의 이름은 1개 이상 20개 이하의 알파벳 소문자로 이루어져 있습니다.
- 참가자 중에는 동명이인이 있을 수 있습니다.
코드
function solution(participant, completion) { var p = participant.sort(); var c = completion.sort(); var answer = ''; for(var i = 0; i < p.length; i++){ if(p[i] !== c[i]){ return answer = p[i]; } } }
풀이
해시 문제라고 되어 있지만 두 배열의 길이가 1만큼의 차이만 나기 때문에
각 배열을 정렬한 뒤, 참여자 배열과 완주자 배열의 요소를 비교하여
두 값이 같아지지 않는 시점의 요소를 바로 리턴하면 답이 나온다.answer를 바로 리턴하지 않고 for문 밖에서 리턴하면
for문이 p 배열의 마지막 인덱스까지 순회하며 마지막 참여자가 answer에 저장되므로
answer를 바로 리턴해 줄 필요가 있다.문제 출처: https://programmers.co.kr/learn/courses/30/lessons/42576
'Coding Test > Programmers Level 1' 카테고리의 다른 글
Level 1 | 가운데 글자 가져오기_Slice() vs Substring() (0) 2020.03.26 Level 1 | 같은 숫자는 싫어 (0) 2020.03.26 Level 1 | 2016년_JavaScript (0) 2020.03.19 Level 1 | K 번째 수_JavaScript (0) 2020.03.19 Level 1 | 모의고사 [완전탐색]_JavaScript (0) 2020.03.12