문제
영어단어가 적힌 카드 뭉치 두 개를 이용하여 순서대로 단어 배열을 사용해 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";
}
'기초다지기 > JS 코딩테스트' 카테고리의 다른 글
javaScript 배열 순위 코드 구현하기 (0) | 2023.12.21 |
---|---|
javaScript 배열 중복 처리하기 (0) | 2023.12.20 |
javaScript 1부터 n까지 숫자를 이용해 주어진 숫자 n 구하기 (0) | 2023.12.18 |
javaScript 빈병계산하기 (0) | 2023.12.14 |
javaScript 2차원 배열의 계산 (0) | 2023.12.13 |