KUKJIN LEE
posted 4 months ago
[프로그래머스] 카드 뭉치 1단계 - JavaScript
코니는 영어 단어가 적힌 카드 뭉치 두 개를 선물로 받았습니다. 코니는 다음과 같은 규칙으로 카드에 적힌 단어들을 사용해 원하는 순서의 단어 배열을 만들 수 있는지 알고 싶습니다.
예를 들어 첫 번째 카드 뭉치에 순서대로 ["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";
}
-
초기화:
-
currentIndex1
와currentIndex2
변수를 각각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"
를 반환합니다.
-