코딩테스트

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

셈인 2023. 6. 25. 23:04

📄 문제

Lv 1. 연습문제 카드 뭉치

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


🔍 문제 접근

카드 뭉치는 서로 다른 카드들로 구성되어 있다

카드 순서대로 문장을 구성해야한다 (어느 카드 뭉치든 상관 없음)
💡 goal의 단어와 일치하면 원소를 제거하여 항상 배열의 첫 번째 값만 비교하면 쉽지 않을까?

 


📝 문제 풀이

  • 매개변수 재할당을 피하기 위해 slice로 배열을 복사하여 사용
  • 카드를 찾지 못했을 경우 빠르게 return 할 수 있도록 for문 사용
  • card1에서 찾으면 card2를 확인할 필요가 없으므로 continue 사용
function solution(cards1, cards2, goal) {
    const _cards1 = cards1.slice();
    const _cards2 = cards2.slice();

    for (let i = 0; i < goal.length; i++) {
        const findCard1 = goal[i] === _cards1[0];
        const findCard2 = goal[i] === _cards2[0];

        if (!findCard1 && !findCard2) {
                return 'No';
        }

        if (findCard1) {
                _cards1.shift();
                continue;
        }
                
        if (findCard2) {
                _cards2.shift();
        }
    }

    return 'Yes';
}