FrontEnd
[JS] 가장 가까운 같은 글자
slice를 활용해서 현재 글자의 앞부분까지 자른뒤, lastIndexOf 함수를 활용해서 가장 최근의 글자와의 거리를 측정하였다. function solution(s) { var ret = []; for(let i =0 ; i< s.length ; i++){ const before = s.slice(0,i) ret.push(before.lastIndexOf(s[i])===-1 ? -1 : i-before.lastIndexOf(s[i])) } return ret; }
[JS] 크기가 작은 부분 문자열
p의 길이만큼 부분문자열을 만든 후에, 크기를 비교해서 더 작은경우의 경우를 세주면 된다. function solution(t, p) { let ret = 0 for (let i=0 ; i
[JS] 추억 점수
map 자료형을 활용하면 쉽게 해결할 수 있는 문제였다. 각 사람마다 추억점수를 map에 저장해두고 reduce를 활용해서 점수를 가져와 더해주었다. function solution(name, yearning, photo) { const map = new Map() for (let i=0;i el.reduce((a,c) => map.get(c) ? a+map.get(c) :a,0)); }
[JS] 둘만의 암호
우선 알파벳이 담겨있는 배열을 만들어준 후, skip할 알파벳을 filter를 통해서 걸러준다. 이후 index만큼 더한 값을 반환하면 된다. function solution(s, skip, index) { const alpha = [ ...new Array(26) ].map((v,i) => String.fromCharCode(i+97) ).filter(el => !skip.includes(el)) return [ ...s ].map(el => alpha[(alpha.indexOf(el)+index) % alpha.length]).join("") }
[JS] 카드 뭉치
1. 처음으로 빼낼 카드뭉치를 선택 2. goal 단어들을 하나씩 순회 3. 해당 카드뭉치에서 빼낼 수 있다면 카드뭉치를 변경하지 않고 다음 단어로 이동 4. 해당 카드뭉치에서 빼낼 수 없다면 카드뭉치를 변경하고 한번더 검색 5. 두 카드뭉치에서 단어를 빼낼수 없다면 결과를 NO로 변환 function solution(cards1, cards2, goal) { const cards = [cards1,cards2] let ret = "Yes" let i = cards2.includes(goal[0]) ? 1 : 0 for (const word of goal) { if (cards[i][0]===word) { cards[i].shift() continue } i = i ? 0 : 1 if (cards[i][..
[JS] 대충만든 자판
객체를 하나 만든 후, 알파벳에 해당되는 최소 키 입력횟수를 넣어주었다. 또한 키가 해당되지 않는다면, -1을 반환하도록 하였다. function solution(keymap, targets) { const keyMap = {}; keymap.forEach(key => { [ ...key ].forEach((el,idx) => { if (el in keyMap){ keyMap[el] = keyMap[el] [ ...el ].reduce((a,c,idx,arr) => { if(!keyMap[c]) {arr.splice(1); return -1} return a+keyMap[c] },0)); }