less than 1 minute read

오늘 배운 것 & 한 것


1. sports

겨우 풀었다.. 문자열 길이만큼 키 만든 후 섞은 다음 다시 문자열에 매칭시키고 set로 중복 제거하면 되는데, 섞는 부분이 굉장히 어려웠다.

아래는 답 코드:

SPOILER</summary>

var keys;
function permutations(string) {
  let chars = string.split('');
  let arr = [...Array(string.length).keys()];
  keys = arr;
  let sets = new Set([...keys]);
  let combis = getCombis(arr, 0, sets, '');
  console.log(combis);
  let ans = [];
  combis.forEach(e=>{
    let target = [];
    if(e.length!=keys.length){
      target = [...e.split(',')];
    }
    else target = [e];
    
    ans.push(target.map(i=>{
      return i.split('').map(x=>string[x]).join('');
    }))
  });
  ans = ans.reduce((acc, val) => acc.concat(val), []);
  console.log([...new Set(ans)]);
  return [...new Set(ans)];
}

function getCombis(arr, currentIndex, currentSets, str){
  if(currentIndex == arr.length) return (str + [...currentSets]);
  let index, sets,ks;
  [index, sets] = [currentIndex, currentSets];
  let ans = [];
  [...sets].forEach((e,i,a)=>{
    ks = [...keys];
    if(sets.has(e)){
      sets.delete(e);
      ans.push([getCombis(arr, index+1, sets, str+e)].join(''));
      sets.add(e);
    }
  });
  return ans;
}

</details>

2. meta

새 snippet 만듬.

"Collapsible Block": {
  "prefix": "collapsibleBlock",
  "body": [
    "\r",
    "<details><summary>${1:spoiler}</summary>\r",
    "${0}",
    
    "</details>"
  ],
  "description": "Collapsible block"
}

ativ에서 세팅 다운받으려 했는데 실수로 업로드함.

dep

ref


Comments