본문 바로가기

전체 글88

백준 5086번 백준 5086번을 풀어보았다.let input = require('fs').readFileSync('/dev/stdin').toString().split('\n').map((value) => value.trim())for(const i of input) { if (i === '0 0') break const [A, B] = i.split(' ').map(Number) let output = '' if (B % A === 0) output = 'factor' else if (A % B === 0) output = 'multiple' else output = 'neither' console.log(output)} 간단한 문제이지만, 처음에는 const [A, B] = i.split(' ') 으로.. 2025. 1. 13.
백준 2869 백준 2869번을 풀어보았다. 올라간 후에도 V보다 작다면 필연적으로 밤을 지내며 B만큼 미끄러지게 되므로 올라간 것을 기준으로 생각하였다. 즉 첫째 날에는 A만큼, 둘째 날에는 -B+A만큼, 셋째 날에도 -B+A만큼 올라간다. 시간 제한이 있는 문제로, 처음에는 단순한 반복문으로 풀었다가 시간 초과가 나왔다.let [A, B, V] = require('fs').readFileSync('/dev/stdin').toString().split(' ').map(Number)let day = 1, distance = Awhile (true) { if (distance >= V) { break } day += 1 distance = distance - B + A}console.log(day)더보기wh.. 2025. 1. 10.
백준 1193번 백준 1193번을 풀어보았다. 분자, 분모의 합이 동일한 분수들이 대각선으로 같은 줄에 놓여있다는 점을 토대로 번째수와 분자, 분모의 합 간의 관계를 살펴보았다. 1번째 분수는 합이 2, 2~3번째 분수는 합이 3, 4~6번째 분수는 합이 4, 7~10번째 분수는 합이 5이다. 1 = 1 (합 2)3 = 1 + 2 (합 3)6 = 1 + 2 + 3 (합 4)10 = 1 + 2 + 3 + 4 (합 5)... 와 같은 규칙이 있다. 위와 같은 규칙을 토대로 X번째 분수의 분자, 분모의 합(sum)을 구하고 합이 동일한 범위의 마지막 번째(cnt)에서 X번째가 몇 번째 앞인지 구해 구체적인 분자, 분모를 알아낸다.let X = require('fs').readFileSync('/dev/stdin').toStr.. 2025. 1. 10.
백준 2292번 백준 2292번을 풀어보았다. 1번 방은 최소 1개의 방, 2~7번 방은 최소 2개의 방, 8~19번 방은 최소 3개의 방, 20~37번 방은 최소 4개의 방을 지난다. 1 = 1 (최소 1개 방)7 = 1 + 6 * 1 (최소 2개 방)19 = 1 + 6 * 1 + 6 * 2 (최소 3개 방)37 = 1 + 6 * 1  + 6 * 2 + 6 * 3 (최소 4개 방)... 과 같은 규칙이 있다. 위 규칙을 토대로 작성한 코드는 아래와 같다.let input = require('fs').readFileSync('/dev/stdin').toString()input = Number(input)let count = 1, rooms = 1while (true) { if (input > rooms) { ro.. 2025. 1. 10.