codeTest😐Javascript

[프로그래머스] Lv.1 카드 뭉치(Javascript)

grovy 2023. 3. 28. 02:00
728x90

카드 뭉치 문제설명 

문제보러가기

제한사항

  • 1 ≤ cards1의 길이, cards2의 길이 ≤ 10
    • 1 ≤ cards1[i]의 길이, cards2[i]의 길이 ≤ 10
    • cards1과 cards2에는 서로 다른 단어만 존재합니다.
  • 2 ≤ goal의 길이 ≤ cards1의 길이 + cards2의 길이
    • 1 ≤ goal[i]의 길이 ≤ 10
    • goal의 원소는 cards1과 cards2의 원소들로만 이루어져 있습니다.
  • cards1, cards2, goal의 문자열들은 모두 알파벳 소문자로만 이루어져 있습니다.

입출력 예

cards1 cards2 goal result
["i", "drink", "water"] ["want", "to"] ["i", "want", "to", "drink", "water"] "Yes"
["i", "water", "drink"] ["want", "to"] ["i", "want", "to", "drink", "water"] "No"

입출력 예 설명

입출력 예 #1

본문과 같습니다.

 

입출력 예 #2

cards1에서 "i"를 사용하고 cards2에서 "want"와 "to"를 사용하여 "i want to"까지는 만들 수 있지만 "water"가 "drink"보다 먼저 사용되어야 하기 때문에 해당 문장을 완성시킬 수 없습니다. 따라서 "No"를 반환합니다.

 

문제풀이

function solution(cards1, cards2, goal) {
    for(let s of goal) {
    		//goal을 배열로 for of문으로 
            //한글자씩 순차적으로 매치되는게 있는지 비교한다
            //shift로 한글자씩 배열에서 제거하여 
            //순서대로 제거못하면 no를 리턴한다
            if(cards1[0] === s) {
                cards1.shift();
            } else if(cards2[0] === s) {
                cards2.shift();
            } else {
                return "No"
            }
        }
    return "Yes";
}

얼마전에 배운 shift를 써서 풀어봐써요!