본문 바로가기

CS/알고리즘

[250430] 카드 뭉치

반응형

 

 

문제

https://school.programmers.co.kr/learn/courses/30/lessons/159994?language=javascript

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 

풀이

첫 번째 풀이

function solution(cards1, cards2, goal) {
    for(let i = 0; i < goal.length; i++) {
        if(cards1[0] === goal[i]) {
            cards1.shift();
        } else if(cards2[0] === goal[i]) {
            cards2.shift();
        } else {
            return "No"
        }
    }
    return "Yes"
}

그러나, 해당 코드는 시간복잡도에서 문제가 있다.

 

다른 풀이

그래서 다음과 같이 풀면 시간복잡도 문제를 해결할 수 있다.

function solution(cards1, cards2, goal) {
    let j = 0;
    let k = 0;
    for(let i=0;i<goal.length;i++){
        if(goal[i] == cards1[j]) j++;
        else if(goal[i] == cards2[k]) k++;
        else return "No"
    }
    return "Yes";
}

 

반응형

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

[230427] 과일 장수  (0) 2023.04.27
[230424] 프로세스  (0) 2023.04.24
[230423] 소수 만들기  (0) 2023.04.23
[230423] 연속 부분 수열 합의 개수  (0) 2023.04.23
[230423] 명예의 전당  (1) 2023.04.23