FrontEnd/프로그래머스

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

    [JS] 숫자 문자열과 영단어

    replaceAll 함수를 활용하면 쉽게 해결할 수 있을거란 생각이 들어서 적용해보았더니 잘 풀렸다. li의 인덱스 값에 맞추어서 그에 해당되는 단어들을 대응시켰고, 단어들을 모두 idx로 바꿔주었다. function solution(s) { const li = ['zero','one','two','three','four','five','six','seven','eight','nine'] li.forEach((el,idx) => { s = s.replaceAll(el,idx) }) return +s; } 풀고났더니 다른분이 푼 풀이랑 상당히 유사해서 기분이 좋았다.