본문 바로가기

728x90

Algorithm

[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] 백준 2609 /** * @link https://www.acmicpc.net/problem/2609 * @description * * 문제 두 개의 자연수를 입력받아 최대 공약수와 최소 공배수를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에는 두 개의 자연수가 주어진다. 이 둘은 10,000이하의 자연수이며 사이에 한 칸의 공백이 주어진다. 출력 첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다. */ const readline = require('readline'); const rl = readline.createInterface({ input: process.stdin, output: process.stdout, }); const input = [].. 더보기
[node.js] 백준 1463번 1로 만들기 const readline = require('readline'); const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); const input = []; rl.on('line', (line) => { input.push(Number(line)); }) .on('close', () => { const [n] = input; const memo = { 0: 0, 1: 0, } for (let i = 2; i 더보기

728x90