본문 바로가기

728x90

Algorithm/programmers

[NodeJS] 프로그래머스 숫자 문자열과 영단어 /** * @link https://school.programmers.co.kr/learn/courses/30/lessons/81301 */ const solution = (str) => { let answer = ''; const map = { ze: [0, 4], on: [1, 3], tw: [2, 3], th: [3, 5], fo: [4, 4], fi: [5, 4], si: [6, 3], se: [7, 5], ei: [8, 5], ni: [9, 4], }; while (str.length > 0) { const char = str[0]; if (!Number.isNaN(Number(char))) { answer += char; str = str.substring(1); } else { const [.. 더보기
[NodeJS] 프로그래머스 오픈 채팅방 const solution = (record) => { const msg = []; const map = {}; for (let i = 0; i `${map[id]}${str}`); }; 더보기
[NodeJS] 프로그래머스 신규 아이디 추천 /** * @link https://school.programmers.co.kr/learn/courses/30/lessons/72410 */ const solution = (new_id) => { const step1 = (s) => { return s.toLowerCase(); }; const step2 = (str) => { let result = ''; for (const s of str) { const code = s.charCodeAt(); let isAdd = false; if ([45, 46, 95].includes(code)) { isAdd = true; } else if (97 { if (15 < str.length) { return step4(str.substring(0, 15)); }.. 더보기
[NodeJS] 프로그래머스 로또의 최고 순위와 최저 순위 /** * @link https://school.programmers.co.kr/learn/courses/30/lessons/77484 */ const solution = (lottos, win_nums) => { const ranking = { 6: 1, 5: 2, 4: 3, 3: 4, 2: 5, 1: 6, 0: 6, }; const { zeroCnt, winCnt } = lottos.reduce( (obj, curVal) => { if (curVal === 0) { obj.zeroCnt++; } else if (win_nums.includes(curVal)) { obj.winCnt++; } return obj; }, { zeroCnt: 0, winCnt: 0, }, ); return [ranking[.. 더보기
[NodeJS] 프로그래머스 문자열 압축 /** * @link https://school.programmers.co.kr/learn/courses/30/lessons/60057 */ const solution2 = (s) => { let answer = [s.length]; const len = Math.floor(s.length / 2) + 1; for (let i = 1; i < len; i++) { let cnt = 1; let str = ''; for (let j = 0; j < s.length; j += i) { const pChar = s.substring(j, j + i); const char = s.substring(j + i, j + i * 2); if (pChar === char) { cnt++; } else { str = `.. 더보기
[NodeJS] 프로그래머스 추석 트래픽 /** * @link https://school.programmers.co.kr/learn/courses/30/lessons/17676 */ function solution(lines) { let answer = 0; const times = []; const START = 'START'; const FINISH = 'FINISH'; for (const line of lines) { const [, time, timeTaken] = line.split(' '); const [h, m, s] = time.split(':'); const finishTime = (Number(s) + Number(m) * 60 + Number(h) * 3600) * 1000; const startTime = finishTim.. 더보기
[NodeJS] 프로그래머스 신고 결과 받기 /** * @link https://school.programmers.co.kr/learn/courses/30/lessons/92334 */ function solution(id_list, report, k) { const answer = new Array(id_list.length).fill(0); const reports = [...new Set(report)].map((a) => a.split(' ')); const reportCntMap = {}; const reportMap = reports.reduce((map, [id, reportId]) => { map[id] = map[id] ? [...map[id], reportId] : [reportId]; reportCntMap[`${reportId.. 더보기

728x90