FrontEnd
[JS] JaDenCase 만들기
공백문자를 기준으로 나눈 이후, 맨 앞부분은 대문자, 나머지 부분은 소문자로 바꿔주면 되는 문제였다. 단 문제 조건에서 공백문자가 반복되서 나올 수 있는것이 조건이라 해당부분을 처리해주었다. function solution(s) { return s.split(" ").map(v => v!==""? v[0].toUpperCase()+v.slice(1).toLowerCase() : "").join(' ') }
[JS] 의상
map 자료형을 통해서 각 의상의 타입별로 옷이 몇개인지 세주면 된다. 어차피 경우의 수를 구하는 것이기 때문에 옷이 몇개인지만 세준 이후, 아무 옷을 안입는 경우는 빼줘야 하므로 마지막에 1을 빼준다. function solution(clothes) { const map = new Map() for (const [name,type] of clothes){ if (map.get(type)) map.set(type,map.get(type)+1) else map.set(type,1) } let ret = 1 for (const [key,val] of map){ ret *= val+1 } return ret-1 }
[JS] 다리를 지나는 트럭
큐 자료구조를 만들어서 해결할 수 있던 문제였다. 자바스크립트에서 따로 큐 라이브러리를 제공하지 않아서 이를 클래스로 만든 이후, 해결하였다. 0으로 다리 길이만큼 채워진 큐를 만들고, 다리가 버틸수 있는 무게를 체크하면서 트럭을 한대씩 보내주었다. class Node { constructor(val) { this.val = val; this.next = null; } } class Queue { constructor() { this.front = null; this.size = 0; this.end = null; this.sum = 0; } push(val) { const node = new Node(val); if (!this.size) { this.front = node; this.end = nod..
[JS] 기능개발
해당 문제 역시 배열이 100개 이하므로 큐 자료구조를 따로 만들지 않고 구현하여 통과하였다. 진행도를 충족시킬만큼을 계산한 후, map자료형으로 전체 할일의 진척도를 업데이트 시켜주고, 100 이하의 진척도가 나올때까지 계속 값을 빼주었다. function solution(progresses, speeds) { const ret = [] while (progresses.length) { const progress = progresses.shift() const speed = speeds.shift() progresses = progresses.map((v,i) => v + Math.ceil((100 - progress) / speed) * speeds[i] ) let cnt = 1 while (prog..
[JS] 프로세스
문제에서 구현하라는 방식대로 구현하면 된다. 배열의 크기가 크다면 생각할 거리가 많았겠지만 100개가 최대의 개수라서 shift나 some과같은 내장함수들을 사용하기로 생각하였다. 만약 우선순위가 가장 높지 않다면 그냥 넘어가고, 가장 높다면 횟수를 세면 된다. 내가 목표로 하는 수가 빠졌는지 확인하기 위해서 idx를 계속 바꿔주었다. function solution(priorities, location) { let cnt = 0 while(1) { const v = priorities.shift() if (priorities.some(el => v
[JS] 가장 큰 수
아이디어를 도출하는게 조금 어려운 문제였다. 처음에는 각 수들마다 오름차순,내림차순 이런 부분들을 생각해서 풀었는데 정렬의 조건을 3 , 30 이 두개를 비교하는 경우 330 이큰지, 303이 큰지 비교하면 되는 문제였다. function solution(numbers) { if (numbers.every(v => v=== 0)) return "0" return numbers.sort((a,b) => +(String(a)+String(b)) < +(String(b)+String(a)) ? 1:-1).join("") } sort함수를 조금 더 유연하게 다뤄야 할 줄 알아야 할 것 같다.