function solution(need, plan) {
let answer = 'YES';
need = need.split('');
let queue = plan.split('');
while (need.length) {
let temp = queue.shift();
if (need.includes(temp)) {
if (need[0] !== temp) return 'NO';
else need.shift();
}
}
return answer;
}
let a = 'CBA';
let b = 'CBDAGE';
console.log(solution(a, b));
그냥 딱 잘푼 것 같다.. 하지만 solution을 보니 조금 더 효율적인 방법이 있을 것 같다.
function solution(need, plan) {
let answer = 'YES';
let queue = need.split('');
for (let x of plan) {
if (queue.includes(x)) {
if (x !== queue.shift()) return 'NO';
}
}
if (queue.length > 0) return 'NO';
return answer;
}
let a = 'CBA';
let b = 'CBDAGE';
console.log(solution(a, b));
- 굳이
while(queue.length)
로 길이를 매번 확인하는 것 보다 공주 구하기 문제와는 다르게plan
이 1번만 쫙 돌면 되므로 for문이 훨씬 효율적인 것 같다.plan
을 그냥 배열로 한칸씩 옮기면 될 것을 오바해서 queue로 구현한 것 같다. 굳이shift()
를 번거롭게 할 필요가 없었다.