Algorithm/Baekjoon55 백준 2581번 백준 2581번을 풀어보았다. 앞의 문제들과 거의 동일한 아이디어를 사용한다. 소수를 찾을 땐 1부터 N까지 확인해볼 수도 있지만 1부터 N의 제곱근까지 확인하는 게 더 효율적이고 이때 반복문 대신 filter 메소드를 사용할 수도 있으며 배열의 합을 구할 땐 반복문을 사용할 수도 있지만 reduce 메소드를 사용하는 게 더 효율적이라는 것. 참고) 백준 2501번, 9506번, 1978번 위 내용을 바탕으로 이 문제는 크게 두 가지 풀이로 구분할 수 있다.M~N 중 소수인 것들만 배열에 넣기M~N 전부 배열에 넣고 소수인 것들만 필터링하기 소수인 것들만 배열에 넣기let [M, N] = require('fs').readFileSync('/dev/stdin').toString().split('\n').m.. 2025. 1. 20. 백준 1978번 백준 1978번을 풀어보았다. 앞서 약수를 찾을 때 1부터 N까지 확인해 볼 수도 있지만 1부터 N의 제곱근까지만 확인해도 된다고 하였는데, 소수 여부를 판단하고 소수를 찾는 경우에도 동일하다. 소수라는 건 1과 자기자신을 제외한 약수를 가지지 않는 수를 의미하므로 2부터 자기자신-1까지 중 약수가 존재하지 않으면 소수일 것이다. 이때 약수는 대칭적으로 존재하므로 2부터 자기자신의 제곱근까지 중 약수가 존재한다면 자기자신의 제곱근 이후로는 굳이 확인해 볼 필요 없다. 참고) 백준 2501번, 백준 9506번 1부터 input[i]까지 확인하기let [N, input] = require('fs').readFileSync('/dev/stdin').toString().split('\n')N = Number(N.. 2025. 1. 17. 백준 9506번 백준 9506번을 풀어보았다. 다양한 풀이가 존재하는데, 크게 약수 구하기, 배열의 합 구하기, 배열 출력하기 측면에서 구분해볼 수 있다. 1. 약수 구하기1부터 n까지 확인1부터 n/2까지 확인1부터 n의 제곱근까지 확인2. 배열의 합 구하기반복문 이용reduce 메소드 이용3. 배열 출력하기반복문과 조건문 이용join 메소드 이용 1. 약수 구하기 1부터 n까지 확인let input = require('fs').readFileSync('/dev/stdin').toString().split('\n').map(Number)let output = ''for (const n of input) { if (n === -1) break let sum = 0, divisors = [] for (let i = .. 2025. 1. 17. 백준 2501번 백준 2501번을 풀어보았다. 약수를 구하는 간단한 문제로, 크게 두 가지 풀이로 구분할 수 있다.1부터 N까지 확인해보기1부터 N의 제곱근까지 확인해보기 1부터 N까지 확인해보기let [N, K] = require('fs').readFileSync('/dev/stdin').toString().split(' ').map(Number)let cnt = 0, output = 0for (let i = 1; i 위 코드에선 K번째가 되면 반복을 종료하고 바로 정답을 출력하도록 했지만 반복을 끝까지 수행하여 모든 약수를 배열에 저장한 뒤 K-1번째 요소를 출력할 수도 있다. 1부터 N의 제곱근까지 확인해보기let [N, K] = require('fs').readFileSync('/dev/stdin').toStr.. 2025. 1. 16. 백준 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. 이전 1 2 3 4 5 ··· 10 다음