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

KUKJIN LEE's profile picture

KUKJIN LEE4개월 전 작성

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

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

 

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";
}

 

  • 초기화:

    • currentIndex1currentIndex2 변수를 각각 0으로 초기화합니다. 이 변수들은 각 카드 덱에서 현재 단어의 위치를 추적합니다.

  • 목표 단어 목록 순회:

    • for (const word of goal)goal 배열의 각 단어를 순차적으로 순회합니다.

  • 단어 비교:

    • if (cards1[currentIndex1] === word):

      • cards1 덱에서 currentIndex1 위치의 단어가 현재 goal의 단어와 일치하면 currentIndex1을 1 증가시킵니다.

    • else if (cards2[currentIndex2] === word):

      • cards2 덱에서 currentIndex2 위치의 단어가 현재 goal의 단어와 일치하면 currentIndex2을 1 증가시킵니다.

    • else:

      • 두 카드 덱 모두 현재 단어와 일치하지 않으면 return "No"를 반환하여 함수 실행을 종료합니다.

  • 성공:

    • goal 배열의 모든 단어를 순회하면서 모두 일치하면 return "Yes"를 반환합니다.

New Tech Posts