토이

황지웅·2022년 3월 26일
0
  • 11번 문제 조합?
const powerSet = function (str) {
  // 정렬
  const sorted = str.split('').sort();
  //['a','b','c']

  // 중복 제거
  const deduplicated = sorted.reduce((acc, item) => {
    if (acc[acc.length - 1] === item) {
      return acc;
    } else {
      return acc.concat(item);
    }
  });



  let subSets = [];
  const pickOrNot = (idx, subset) => { //pickOrNot(0,'') pic(1,'') pic(2,'')
    // base case
    if (idx === deduplicated.length) {
      // 마지막 문자까지 검토한 경우
      subSets.push(subset);
      return;
    }
    // recursive case
    // idx번째 문자가 포함되지 않는 경우
    pickOrNot(idx + 1, subset); // 
    // idx번째 문자가 포함되는 경우
    pickOrNot(idx + 1, subset + deduplicated[idx]);
  };

  pickOrNot(0, '');

  return subSets.sort();
};


// const powerSet = function (str) {
//   // TODO: 여기에 코드를 작성합니다.
//   const arr = str.split('').sort(); // 문자열을 분리해서 배열로 만들어주고 정렬해준다.
//   //['a','b','c']
//   const result = ['']; // 결과가 담긴 배열 

//   let aux = (target) => { // result에서 target을 추가한 인자들을 result에 추가해주는 함수
//     let copy = result.slice(); //['']
//     for(let el of copy) {
//       el += target;
//       result.push(el);
//     }
//   }
// //result => ['']/ 
//   for(let el of arr) { // arr의 값들을 전부 넣어서 aux함수 실행 arr: ['a', 'b', 'c']
//     if(result.indexOf(el) === -1) { // 중복값이아닌 경우에만 실시
//       aux(el);  
//     }
//   }
//   return result.sort(); // 결과를 정렬해서 반환 
// };
  • 13번 문제 bfs
let bfs = function (node) {
  // TODO: 여기에 코드를 작성합니다.
  let queue = [node];
  const values = [];
  while (queue.length > 0) {
    const head = queue[0];
    queue = queue.slice(1);

    values.push(head.value);

    head.children.forEach((child) => queue.push(child));
  }
  return values;
};

// 이 아래 코드는 변경하지 않아도 됩니다. 자유롭게 참고하세요.
let Node = function (value) {
  this.value = value;
  this.children = [];
};

// 위 Node 객체로 구성되는 트리는 매우 단순한 형태의 트리입니다.
// membership check(중복 확인)를 따로 하지 않습니다.
Node.prototype.addChild = function (child) {
  this.children.push(child);
  return child;
};
  • 07번 dfs
let dfs = function (node) {
  // TODO: 여기에 코드를 작성합니다.
  let values = [node.value];

  node.children.forEach((n) => {
    values = values.concat(dfs(n));
  });

  return values;
};

// 이 아래 코드는 변경하지 않아도 됩니다. 자유롭게 참고하세요.
let Node = function (value) {
  this.value = value;
  this.children = [];
};

// 위 Node 객체로 구성되는 트리는 매우 단순한 형태의 트리입니다.
// membership check(중복 확인)를 따로 하지 않습니다.
Node.prototype.addChild = function (child) {
  this.children.push(child);
  return child;
};

0개의 댓글