https://school.programmers.co.kr/learn/courses/30/lessons/159994
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
실행코드
function solution(cards1, cards2, goal) {
const end = goal.length;
for(let i = 0; i < end;i++){
if(cards1[0] === goal[0]){
cards1.shift();
goal.shift();
}else if(cards2[0] === goal[0]){
cards2.shift();
goal.shift();
}else {
return "No"
}
}
return "Yes";
}
풀이
먼저 goal의 길이가 for문을 순회할 때 마다 유동적으로 변하기 때문에 goal의 길이를 담는 end를 선언 해 주었습니다.
for문을 돌아 만약 cards1 , cards2의 첫번째가 goal의 첫번째 요소와 같으면 그 해당 요소를 shift해줍니다 만약 해줄수없을 시 조건에 맞기 않기 때문에 No를 return 쭉돌아서 전부 조건에 맞으면 Yes를 return 해 주었습니다.
개선된풀이
function solution(cards1, cards2, goal) {
if (!Array.isArray(cards1) || cards1.length === 0 ||
!Array.isArray(cards2) || cards2.length === 0 ||
!Array.isArray(goal) || goal.length === 0) {
return "Invalid input";
}
if (goal.length === 0) {
return "Yes";
}
const goalLength = goal.length;
let index1 = 0;
let index2 = 0;
for (let i = 0; i < goalLength; i++) {
if (cards1[index1] === goal[i]) {
index1++;
} else if (cards2[index2] === goal[i]) {
index2++;
} else {
return "No";
}
}
return "Yes";
}
1. 매개변수 유효성 검사를 해줍니다.
2. 초기종료: 'goal'이 빈 배열인 경우 함수는 "Yes"를 반환해줍니다.
3 성능 개선: 이 함수는 루프의 각 반복에서 cards1, cards2 및 goal 배열의 시작 부분에서 요소를 이동합니다. 대형 어레이의 성능 병목 현상. splice 메소드를 사용하여 제거할 요소의 인덱스를 추적하고 한 번에 제거함으로써 성능을 향상시킬 수 있습니다.
'알고리즘 > test' 카테고리의 다른 글
javascript) 프로그래머스 - 1차 다트게임 (0) | 2023.02.22 |
---|---|
javascript) 프로그래머스 - 모의고사 (0) | 2023.02.20 |
javascript) 프로그래머스 - 실패율 (0) | 2023.02.20 |
javascript) 프로그래머스 - 크레인 인형뽑기 게임 (0) | 2023.02.20 |
javascript) 프로그래머스 - 두 개 뽑아서 더하기 (0) | 2023.02.20 |