-
안녕하세요. 오늘은 자바스크립트 알고리즘 완주하지 못한 선수 를 풀어보았습니다.
문제 설명
수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다.
마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요.
제한 사항
- 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다.
- completion의 길이는 participant의 길이보다 1 작습니다.
- 참가자의 이름은 1개 이상 20개 이하의 알파벳 소문자로 이루어져 있습니다.
- 참가자 중에는 동명이인이 있을 수 있습니다.
입출력 예
문제 풀이
function solution(participant, completion) { participant.sort(); completion.sort(); for (let i = 0; i < participant.length; i++){ if (participant[i] !== completion[i]){ return participant[i]; }; }; }; // 아래는 테스트 코드입니다. let test = solution(['a','b','c','d'], ['d','b','a']); console.log(test);
저의 풀이입니다.
우선 매개변수 participant 와 completion 을 sort() 메소드를 이용하여 정렬해줍니다.
그리고 for 반복문을 사용하여 participant.length 값만큼 반복하여
participant[i] 의 요소들이 conpletion[i] 의 요소들과 같지 않을 경우 해당 participant[i] 요소를 리턴해줍니다.
순서대로 정렬한 후 하나하나 반복문으로 비교해서 같지 않은 요소를 찾음으로서 풀었습니다.
마지막으로 다른 사람들의 풀이도 보면서 글 마치겠습니다.
다른 사람들의 풀이
function solution(participant, completion) { var dic = completion.reduce((obj, t)=> (obj[t]= obj[t] ? obj[t]+1 : 1 , obj) ,{}); return participant.find(t=> { if(dic[t]) dic[t] = dic[t]-1; else return true; }); }
'코딩 기록 > 자바스크립트 알고리즘' 카테고리의 다른 글
(자바스크립트 알고리즘) 모의고사 - kimyang-sun (0) 2020.01.27 (자바스크립트 알고리즘) K번째 수 - kimyang-sun (0) 2020.01.27 (자바스크립트 알고리즘) 나누어 떨어지는 숫자 배열 - kimyang-sun (0) 2020.01.27 (자바스크립트 알고리즘) 문자열 내 p와 y의 개수 - kimyang-sun (0) 2020.01.27 (자바스크립트 알고리즘) 자연수 뒤집어 배열로 만들기 - kimyang-sun (0) 2020.01.26 댓글