본문 바로가기

CS/알고리즘

완주하지 못한 선수.

나의 풀이

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

떠오른 생각_

1. 두 리스트 participant와 completion을 오름차순이든 내림차순이든 같은 방식으로 정렬한다.

2. loop를 돌려 같은 번째 인덱스끼리 비교한다.

3. 같은 인덱스끼리 비교했을 때 같은 값이 나오지 않으면 그 인덱스의 값이 participant에만 있고 completion에는 없기 때문에 그 값이 정답이다.

 

다른 분들 풀이

귀찮더라도 for (let i = 0; i< arr.length; i++)식으로 씁시다. for in 은 끝까지 다 돌기 때문에 비효율적입니다.

이분은 pop을 써서 한결 코드가 간결해졌다.

const solution = (p, c) => {
    p.sort()
    c.sort()
    while (p.length) {
        let pp = p.pop()
        if (pp !== c.pop()) return pp
    }
}

 

'CS > 알고리즘' 카테고리의 다른 글

종이접기 [프로그래머스] 실패  (0) 2020.07.14
탑 _프로그래머스  (0) 2020.05.06
k번째수  (0) 2020.05.04
완전탐색 모의고사 수포자 / '%'를 쓸줄아느냐.  (0) 2020.05.04
크레인 인형뽑기 게임  (0) 2020.04.24