FrontEnd

    [JS] 옹알이 (2)

    aya , ye , woo , ma가 모두 들어있는지 확인하면 되지만, 문제 조건에 연속으로 같은 옹알이를 한다면 발음할 수 없다는 조건사항이 붙어있어서. some을 활용해서 이를 해결해주었다. function solution(babbling) { const li = ['aya','ye','woo','ma'] const ret = babbling.reduce((a,c,i,arr) => { if (li.some(el => c.includes(el.repeat(2)))) return a for (const el of li) c = c.replaceAll(el,' ') return c.replaceAll(' ','').length ? a : a+1 },0) return ret; }

    [JS] 햄버거 만들기

    처음에는 join과 replace를 활용해서 반복적으로 "1231"이란 문자열을 교환하도록 해결하려고 했다. 하지만 해당 함수들을 사용하니 시간초과가 발생해서 굳이 문자열로 변환하지 않고 해당 과정을 while문을 활용해서 구현하였다. function solution(ingredient) { let ret = 0 let idx = 0 while(1){ if (ingredient[idx]===1 && ingredient[idx+1]===2 && ingredient[idx+2]===3 && ingredient[idx+3]===1){ ret ++; ingredient.splice(idx,4) idx -= 4 } idx++ if (idx > ingredient.length-4) break } return ret }

    [JS] 푸드파이트 대회

    앞부분을 reduce로 만든 후에, 이를 뒤집어서 0을 기준으로 반환해주어 해결하였다. function solution(food) { var str = food.reduce((a,c,idx) => a+`${idx}`.repeat(~~c/2) ,""); return str + '0' + [...str].reverse().join(''); }

    [JS] 과일장수

    정렬을 시킨 후에 m개씩 배열을 잘라서, 그 최솟값만 가져다ㅏ 쓰는 방식으로 구현했다. 처음에는 고차함수들을 활용해서 위 과정을 세분화 시켰는데 시간초과가 나버렸다.. 따라서 for문으로 바꿔주었는데 잘 작동하였다. function solution(k, m, score) { const cnt = [] var li = score.sort((a,b) => b-a); let sum =0 for(let i = 0; i+m

    [JS] 기사단원의 무기

    핵심은 약수의 개수를 구하는 알고리즘에 있다. 예를들어 100의 약수의 개수를 구한다고 생각해보자. for문을 활용하여 1~100까지의 수를 모두 100에서 나누어 보는 간략한 방법이 존재할 수 있다. 하지만 굳이 그렇게 하지 않고 100의 루트인 10까지만 검색해도 약수의 개수를 구할 수 있다. 10까지 약수를 구한다면 [1,2,5,10] 이 나오는데, 그렇다면 100의 남은 약수는 방금말한 [1,2,4,10] 을 100에서 나눈 값이 된다. 즉, [100,50,25,10] 이 추가적으로 100의 약수가 된다. 중복이 나오는 경우만 제거한다면 약수의 개수를 쉽게 구할 수 있다. function solution(number, limit, power) { const lst = [ ...new Array(n..

    [JS] 명예의 전당

    배열에 k개의 값만 들어있게 유지하고, 배열의 개수가 k개보다 높으면 최솟값을 없애주는 방식으로 해결하였다. function solution(k, score) { let ret = [] let answer = [] for (const scr of score) { ret.push(scr) const min_ = Math.min(...ret) if(ret.length >k) ret.splice(ret.indexOf(min_),1) answer.push(Math.min(...ret)) } return answer; }