본문 바로가기

코테/프로그래머스

[프로그래머스] 카드 뭉치

728x90

[Level 1] 카드 뭉치

문제 링크

구분

코딩테스트연습 > 연습문제

풀이 요약

두 개의 카드 더미 (cards1, cardd2)를 가지고 goal 배열을 순서를 유지한 채 만들 수 있으면 “Yes”, 만들 수 없다면 “No”를 반환하는 문제

나의 풀이

function solution(cards1, cards2, goal) {
    for(let x of goal){
        if(cards1[0]===x){
            cards1.shift()
        }else if (cards2[0]===x){
            cards2.shift()
        }else {
            return "No"
        }
    }
    return "Yes"
}

프로그래머스 0레벨 문제풀이 때 배웠던 shift() 메서드를 이용하여 풀었습니다.

goal 배열을 돌면서 현재 단어 x가 cards1의 인덱스 0번과 일치한다면 cards1의 첫 번째 단어를 제거합니다.

만약 cards2의 0번째 인덱스에 해당하는 단어라면 cards2의 첫 번째 단어를 제거합니다.

예를 들어,

goal ["i", "want", "to", "drink", "water"]

cards1 ["i", "water", "drink"]

cards2 ["want", "to"] 이렇게 있을 때,

goal의 현재 단어가 cards1의 0번째 인덱스와 일치하기 때문에 shift로 제거하면 cards1 ["water", "drink"] 이 됩니다.

또 want는 cards2에 있기 때문에 shift로 cards2의 0번째 인덱스를 지우면 cards2 ["to"]가 됩니다.

이렇게 반복해서 goal의 현재 단어가 drink가 됐을 때, drink는 cards1의 0번째 인덱스에도 없고 cards2의 0번째 인덱스에도 없기 때문에 No가 됩니다.

728x90