FrontEnd/프로그래머스

    [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)); }

    [JS] 공원 산책

    우선 dx,dy,di를 통해서 각 방향에 맞는 변화량을 설정해 주었다. 지금 생각해보면 di하나만 두고, 객체의 값에 'E' : [1,0] 이런 식으로 두었어도 괜찮을 것 같다. 배열에서 "S" 가 들어온 부분을 X,Y로 두고, 명령을 실행해준다. 명령을 하나씩 실행하면서 장애물이 있거나 맵 밖으로 나가면 진행이 안되게 한다. function solution(park, routes) { const dy = [1,0,-1,0] const dx = [0,1,0,-1] const di = { 'E' : 0, 'S' : 1, 'W' : 2, 'N' : 3 } const colLen = park[0].length const rowLen = park.length let [X,Y] = park.map((el,idx)..