기초다지기/JS 코딩테스트
javaScript 두 배열에서 주어진 목표 배열을 만들 수 있는지 검사
김빵그
2023. 12. 19. 10:52
문제
영어단어가 적힌 카드 뭉치 두 개를 이용하여 순서대로 단어 배열을 사용해 goal을 만들수 있는지 확인
풀이
function solution(cards1, cards2, goal) {
let index1 = 0;
let index2 = 0;
for (let i = 0; i < goal.length; i++) {
if (index1 < cards1.length && cards1[index1] === goal[i]) {
index1++;
} else if (index2 < cards2.length && cards2[index2] === goal[i]) {
index2++;
} else {
return "No";
}
}
return "Yes"
}
- index1, index2 : 각각 cards1 과 cards2에서 현재 사용중인 카드의 인덱스를 나타냄
- for
- goal 배열의 각 요소를 순서대로 검사
- 현재 goal 배열과 card1 또는 cars2에서 가져온 카드 값이 일치하는지 확인
- 일치하면 index1을 증가시켜 다음 카드로 이동 / 일치하면 index2 증가시켜 이동
- 어느쪽의 카드에서도 찾을수 없다면 "No"
다른풀이
function solution(cards1, cards2, goal) {
for(const s of goal) {
if(cards1[0] == s) {
cards1.shift();
} else if(cards2[0] == s) {
cards2.shift();
} else {
return "No"
}
}
return "Yes";
}
- for of 를 사용하여 반복 가능한 배열을 반복하고 각 속성 값에 대해 실행되는 문
- shift : 배열에서 첫 번째 요소를 제거하고 제거 된 요소를 반환
function solution(cards1, cards2, goal) {
let j = 0;
let k = 0;
for(let i=0;i<goal.length;i++){
if(goal[i] == cards1[j]) j++;
else if(goal[i] == cards2[k]) k++;
else return "No"
}
return "Yes";
}
function solution(cards1, cards2, goal) {
for(let v of goal) {
if(cards1.includes(v)){
if(cards1.shift() !== v){
return "No";
}
}else{
if(cards2.shift() !== v){
return "No";
}
}
}
return "Yes";
}