프로그래머스 1단계 - 카드 뭉치

코니는 영어 단어가 적힌 카드 뭉치 두 개를 선물로 받았습니다. 코니는 다음과 같은 규칙으로 카드에 적힌 단어들을 사용해 원하는 순서의 단어 배열을 만들 수 있는지 알고 싶습니다.

예를 들어 첫 번째 카드 뭉치에 순서대로 ["i", "drink", "water"], 두 번째 카드 뭉치에 순서대로 ["want", "to"]가 적혀있을 때 ["i", "want", "to", "drink", "water"] 순서의 단어 배열을 만들려고 한다면 첫 번째 카드 뭉치에서 "i"를 사용한 후 두 번째 카드 뭉치에서 "want"와 "to"를 사용하고 첫 번째 카드뭉치에 "drink"와 "water"를 차례대로 사용하면 원하는 순서의 단어 배열을 만들 수 있습니다.

카드 뭉치Lv.1

159994

https://school.programmers.co.kr/learn/courses/30/lessons/159994

해설

두 개의 인덱스 변수를 활용, currentIndex1과 currentIndex2는 각각 cards1과 cards2에서 현재 사용 중인 단어의 인덱스를 나타냅니다. "goal" 배열을 순회하면서 cards1, cards2를 활용해 만들 수 있는지 확인합니다.

  • Name
    currentIndex
    Type
    Description

    currentIndex1과 currentIndex2를 활용해 cards1과 cards2를 사용하고, Index를 증가시키면서 goal을 만들 수 있는지 확인합니다.

  • Name
    조건
    Type
    Description
    1. currentIndex를 활용해 cards를 순회하면서, 두 조건을 만족시킬 수 없다면 "No"를 반환합니다.
    2. goal을 순회하면서 cards를 통해 만들 수 있다면 "Yes"를 반환합니다.

카드 뭉치

function solution(cards1, cards2, goal) {

    let currentIndex1 = 0;
    let currentIndex2 = 0;

    for (const word of goal) {
        if (cards1[currentIndex1] === word) {
            currentIndex1++;
        } else if (cards2[currentIndex2] === word) {
            currentIndex2++;
        } else {
            return "No";
        }
    }

    return "Yes";
}