교육과정 설계 : Queue

frenchkebab·2021년 8월 25일
0
post-thumbnail



내 풀이

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을 보니 조금 더 효율적인 방법이 있을 것 같다.


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()를 번거롭게 할 필요가 없었다.
profile
Blockchain Dev Journey

0개의 댓글