티스토리 뷰
반응형
programmers.co.kr/learn/courses/30/lessons/42576
해쉬브라운 먹고싶다.
처음에는 아래와 같이 splice를 이용해서 완주한 선수를 참가자 명단에서 차례로 지우는 방향으로 코드를 짰다.
function solution(participant, completion) {
completion.map( c => participant.splice(participant.indexOf(c),1) );
return participant.toString();
}
이렇게 했을 때 정확성은 통과가 되지만 효율성은 하나도 통과가 되지 않는다.
문제점이야 여러가지가 있겠지만, 우선 굳이 완주자 명단 전체를 한 번 훑는 모양새에서 완주하지 못 한 선수를 찾은 시점에 해당 선수의 이름을 반환해주는 구조로 바꿔주면 통과는 되는 것 같다.
그러기 위해서 먼저 참가자, 완주자 명단을 sort() 함수로 정렬한 뒤 for 문으로 비교하다가 같은 인덱스에서 다른 값을 가지고 있을 때 그 값을 반환하도록 코드를 짜면된다.
사실 다른 사람의 풀이를 보고서 '음.. 이런거군' 했지 splice에 꽂혀서 계속 그거로만 해결하려고 했다.
아래는 풀이 내용이다.
function solution(participant, completion) {
participant.sort();
completion.sort();
var len = participant.length;
for ( var i = 0 ; i < len ; i++ ) {
if ( participant[i] != completion[i] ) {
return participant[i];
}
}
}
이렇게 하면 정확성, 효율성 둘 다 통과가 된다.
물론 이것만 정답은 아니고, 그냥 맨 위에 있어서 참고했다.
내리다 보면 이러한 알 수 없는 것도 있다.
var solution=(_,$)=>_.find(_=>!$[_]--,$.map(_=>$[_]=($[_]|0)+1))
근데 궁금한건 또 못참아서 보기 편하게 고치고 디버깅해서 어떤 구조로 돌아가는지 방금 파악을 했다. 근데 벌써 시간이 늦어서 내일 정리해야될 것 같다.
흠터레스팅..
반응형
'개발 일지' 카테고리의 다른 글
[javascript] ES6 궁금한거만 정리 (0) | 2020.09.10 |
---|---|
[알고리즘] 해시 > 완주하지 못한 선수(2) (0) | 2020.09.09 |
[Angular/Ionic] 클래스 바인딩 (0) | 2020.08.25 |
[Angular 4/vscode] 4. 데이터 바인딩 (0) | 2020.08.01 |
[Angular 4/vscode] 3. 컴포넌트, 서비스 생성 (0) | 2020.07.29 |