2021년 2월 15일에 Velog에 작성한 글을 옮겨온 글입니다. 프로그래머스 - 가장 큰 수 풀이 function solution(numbers) { const answer = numbers.sort((a, b) => (('' + b + a) - ('' + a + b))); return answer.every(cur => !cur) ? '0' : answer.join(''); } 처음 문제를 딱 봤을 때는 numbers.sort().reverse().join('')을 생각했는데, 이 로직은 예제처럼 [30, 3]이 있을 때, '330'이 아닌 '303'을 리턴하게 됩니다. 문제를 찬찬히 다시 읽어보니 "정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내라."라고 합니다. 그래서 두 숫자를 문자열로 ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bnt3ye/btq6zq0V6n9/RaIR1WBl1cNp5hH69hgLa1/img.png)
2021년 2월 24일 Velog에 작성할 글을 옮겨온 글입니다. 프로그래머스 - [3차] 압축 function solution(msg) { let answer = []; let dictionary = ['']; for (let i = 65; i < 91; i++) { // 1 사전 초기화 dictionary.push(String.fromCharCode(i)); } for (let i = 0, j, len = msg.length; i < len; i = j) { let w = msg[i]; for (j = i + 1; j < len; j++) { // 2 현재 입력 중 사전에 등재되어 있는 가장 긴 문자열 w 찾기 let c = msg[j]; if (!dictionary.includes(w + c)) {..
2021년 1월 25일 Velog에 작성한 글을 옮겨온 글입니다. 프로그래머스 - 신규 아이디 추천 문제 설명에서 제시한 단계별로 id를 변환하는 과정을 구현합니다. 모든 대문자를 대응되는 소문자로 치환합니다. 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.)를 제외한 모든 문자를 제거합니다. 마침표(.)가 2번 이상 연속된 부분을 하나의 마침표(.)로 치환합니다. 마침표(.)가 처음이나 끝에 위치한다면 제거합니다. 빈 문자열이라면, "a"를 대입합니다. 길이가 16자 이상이면, 첫 15개의 문자를 제외한 나머지 문자들을 모두 제거합니다. 만약 제거 후 마침표(.)가 끝에 위치한다면 끝에 위치한 마침표(.) 문자를 제거합니다. 길이가 2자 이하라면, 마지막 문자를 길이가 3이 될 때까지 반복해..
2021년 1월 13일에 Velog에 작성한 글을 옮겨온 글입니다. 프로그래머스 - [카카오 인턴] 키패드 누르기 풀이 우선 각 번호 사이의 거리를 구해둔 후(dist 객체), 번호에 따라 적절한 손가락을 사용하도록 분기처리했다. 현재 손가락 위치(left, right 변수)를 저장하여 가운데 줄 번호를 누를 때 번호 사이의 거리를 측정할 수 있게 했다. if else 분기처리가 많다보니 깔끔한 느낌이 없어 아쉬웠지만, 이 이상 줄이면 오히려 지저분해질거 같고, 문제에서 제시한 스탭과 맞아 아래 코드로 제출했다. function solution(numbers, hand) { const dist = { // 가운데 줄 번호와 각 번호 사이의 거리. ex) dist[2][0] - 2번과 0번 사이의 거리: ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/cgZPg6/btq6Ac1XQY0/CfQzqbLUOd9BE4Wmaq5XDk/img.png)
2021년 2월 10일 Velog에서 옮겨온 글입니다. 프로그래머스 - 124 나라의 숫자 function solution(n) { let answer = ''; while (n > 0) { answer = (n % 3 || 4) + answer; n = Math.floor((n - 1) / 3); } return answer; } 3진법을 구할 때와 비슷하게 계산합니다. 단, n을 3으로 나눈 나머지가 1이나 2일 경우에는 그대로 사용하고, 나머지가 0인 경우에는 0 대신 4를 사용하며 n - 1로 몫을 구합니다. 나머지가 0일 경우, 3진법에서는 10으로 표기되는데, 124 나라에서는 4로 표기되므로 몫을 구할 때 -1을 해주어야 합니다. (나머지가 1이나 2일 경우, n / 3이나 (n - 1) /..
2021년 1월 15일 Velog에 작성한 글을 옮겨온 글입니다. 프로그래머스 - [3차] 파일명 정렬 정규표현식 캡처 그룹을 활용한 문제 풀이입니다. 풀이 Array.prototype.sort에 인자로 compareFunction을 전달하여 문제에서 정의한 순서대로 파일명을 정렬하는 문제입니다. 정규표현식으로 그룹을 캡처하여 HEAD, NUMBER, TAIL을 나눈 다음, HEAD 부분은 localeCompare 함수로 비교하고, NUMBER 부분은 + 기호를 이용해 숫자로 형 변환하여 비교했습니다. (\D+) HEAD는 숫자가 아닌 문자로 이루어져 있으며(\D), 최소한 한 글자 이상(+)이다. (\d{1, 5}) NUMBER는 한 글자에서 최대 다섯 글자 사이({1, 5})의 연속된 숫자(\d)로 ..
2021년 1월 11일에 Velog에 작성한 글을 옮겨온 글입니다. 프로그래머스 - k번째 수 배열 구조 분해 할당으로 직관적인 코드 짜기 풀이 Array 객체의 프로토타입 메서드를 사용하여, i번째 숫자부터 j번째 숫자까지 자르고(slice), 정렬한 후(sort), k번째에 있는 수를 리턴합니다. Array.prototype.sort 함수는 요소를 문자열로 변환하고 유니 코드 코드 포인트 순서로 비교하여 정렬하는데, 이 문제에서는 숫자 순으로 정렬해야 하므로 별도로 compareFunc를 전달해줍니다. 나의 풀이 function solution(array, commands) { const compareFunc = (a, b) => a - b; return commands.map(command => {..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/RsFEa/btq6zp8MiNE/7NK54OcRLX8bVf0nysWXn0/img.png)
2021년 2월 8일 Velog에 작성한 글을 옮겨온 글입니다. 프로그래머스 - 스킬트리 답안 1 function solution(skill, skill_trees) { const skill_regex = new RegExp(`[^${skill}]`, 'g'); const skill_len = skill.length; return skill_trees.reduce((cnt, tree) => { tree = tree.replace(skill_regex, ''); // skill에 속하는 문자만 남김 for(let i = 0, tree_len = tree.length; i < skill_len && i < tree_len; i++) { if (skill[i] !== tree[i]) return cnt; //..
- node mkdir -p
- jest
- 웹팩 에러
- JavaScript
- 프로그래머스
- node file package
- 페이지 특정 위치 link
- 인가
- file opener preference
- node fs
- sass
- 스터디
- Webpack Error
- createAction
- 자바스크립트
- make-dir
- ECONNRESET
- node cp -r
- external editor
- rimraf
- 인증
- 스토리북 에러
- ELIFECYCLE
- fs-extra
- javascript event
- Storybook Error
- ModuleParseError: Module parse failed: Unexpected token
- mkdirp
- errno 253
- node rm -rf