FrontEnd
[JS] 크레인 인형뽑기
stack 구조로 인형을 넣을 배열은 하나 만들고, 판을 돌려서 인형을 뺄때 pop으로 뺴기 편한 구조로 만들었다. 1,2번 테케가 잘 통과가 안되었는데 stack이 비어있는 경우를 예외처리해줌으로 이를 해결했다. function solution(board, moves) { const stack = [] const newBoard = board.reduce( (result, row) => row.map((_, i) => row[i] ? [ row[i] , ...(result[i] || []) ] : []),[]) return moves.reduce((a,c) => { const doll = newBoard[c-1].pop() if (doll === stack[stack.length-1] && stack...
[JS] 키패드누르기
아래와 같은 방식으로 진행했다. 1. 1,4,7이라면 hand에 L 저장 2. 3,6,9라면 hand에 R 저장 3. 그 외숫자면 getnHand를 통해서 거리계산으로 L인지 R인지 저장 4. 손에 따라서 reduce를 활용해 글자를 만들어줌과 동시에 left 혹은 right 좌표를 갱신 function solution(numbers, hand) { const cod = [[3,1],[0,0],[0,1],[0,2],[1,0],[1,1],[1,2],[2,0],[2,1],[2,2]] let [left,right] = [[3,0],[3,2]] const getnHand = (a,b,c) => { const a_c = Math.abs(c[1]-a[1])+Math.abs(c[0]-a[0]) const b_c = ..
[JS] 두개 뽑아서 더하기
사실 두개정도면 for문 2개를 활용하는게 더 좋았을 거 같긴 한데, 이전에 순열 뽑아내는 알고리즘을 한번 복습하고 싶어서 순열을 활용해서 풀어보았다. 순열 알고리즘을 활용해서 모든 경우의 수를 가져온 다음, set자료형을 활용해서 중복을 없애주었다. const getCombinations = (n,ary) => { const ret = [] if (n===1) return ary.map(el => [el]) ary.forEach((fixed,idx,origin) => { const rest = ary.slice(idx+1); const combinations = getCombinations(n-1,rest) const attach = combinations.map(el => [fixed , ...el ..
[JS] 신규 아이디 추천
문제를 딱 읽자마자 정규표현식을 활용하면 좋을 것 같다는 생각을 했다. 우선 . 을 문자로 사용하기 위해서 정규표현식 앞에 \ 를 붙여줘야 한다. 1단계 : toLowerCase를 통해서 대문자들을 모두 소문자로 바꿔준다. 2단계 : \w를 쓰면 알파벳과 숫자 _ 를 한번에 표현할 수 있다. 이어서 - 와 . 외의 모든 글자를 "" 으로 바꿔줌으로써 값을 제거해주었다. 3단계 : .가 반복적으로 나오는 경우 .가 한개만 나오도록 바꿔주었다. 4단계 : 정규표현식에서 ^는 처음을 $은 마지막을 나타낸다. 이를 활용해서 처음과 끝의 .을 없애주었다. 5단계 : 공백만 존재하는 경우 a로 바꿔주었다. 6단계 : 문자열의 길이를 자른 후, .로 끝나는 경우 이를 없애주었다. 7단계 : 글자수가 3개가 안되는 경..
[JS] 내적
reduce의 세번째 인자인 idx를 활용하면 쉽게 해결할 수 있다. solution = (a, b) => a.reduce((a,c,idx) => a+c*b[idx],0);
[JS] 로또의 최고순위와 최저순위
reduce를 활용해서 왼쪽에는 최고 순위, 오른쪽에는 최저 순위가 담기도록 설정하였다. 0이 들어온 경우는 순위가 변하지 않고, 그 외에는 c가 있나없나를 확인해서 최저순위 혹은 최고순위로 바뀌게 했다. 마지막에 map 함수를 활용해서 6보다 큰 값이 나오는 경우는 필터링해서 문제를 해결하였다. function solution(lottos, win_nums) { return lottos.reduce((a,c) => c ? win_nums.includes(c) ? [a[0],a[1]-1] : [a[0]+1,a[1]] : a ,[1,7]).map(el => el>6 ? 6 : el) }