본문 바로가기

nodejs

(3)
백준2960번 - 에라토스테네스의 체 자바스크립트(Node.js)풀이 문제 에라토스테네스의 체는 N보다 작거나 같은 모든 소수를 찾는 유명한 알고리즘이다. 이 알고리즘은 다음과 같다. 2부터 N까지 모든 정수를 적는다. 아직 지우지 않은 수 중 가장 작은 수를 찾는다. 이것을 P라고 하고, 이 수는 소수이다. P를 지우고, 아직 지우지 않은 P의 배수를 크기 순서대로 지운다. 아직 모든 수를 지우지 않았다면, 다시 2번 단계로 간다. N, K가 주어졌을 때, K번째 지우는 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N과 K가 주어진다. (1 ≤ K < N, max(2, K) < N ≤ 1000) 출력 첫째 줄에 K번째 지워진 수를 출력한다. 문제유형 수학 구현 정수론 소수 판정 에라토스테네스의 체 에라토스테네스의 체를 몰라도 문제만 잘 읽으면 풀 수 있는 문제이다..
백준1038번 - 감소하는 수 자바스크립트(Node.js)풀이 문제 음이 아닌 정수 X의 자릿수가 가장 큰 자릿수부터 작은 자릿수까지 감소한다면, 그 수를 감소하는 수라고 한다. 예를 들어, 321과 950은 감소하는 수지만, 322와 958은 아니다. N번째 감소하는 수를 출력하는 프로그램을 작성하시오. 0은 0번째 감소하는 수이고, 1은 1번째 감소하는 수이다. 만약 N번째 감소하는 수가 없다면 -1을 출력한다. 입력 첫째 줄에 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수 또는 0이다. 출력 첫째 줄에 N번째 감소하는 수를 출력한다. 문제유형 브루트포스 알고리즘 백트래킹 백줄이 넘어가는 정말 보기힘든 코드로 풀고있다가 너무나도 신박한 풀이를 발견하였다. 이 풀이를 nodejs 코드로 변환하고 산책을 하면서 코드를 이해해보았다. encrypted..
백준10830번 - 행렬 제곱 자바스크립트(Node.js)풀이 문제 크기가 N*N인 행렬 A가 주어진다. 이때, A의 B제곱을 구하는 프로그램을 작성하시오. 수가 매우 커질 수 있으니, A^B의 각 원소를 1,000으로 나눈 나머지를 출력한다. 입력 첫째 줄에 행렬의 크기 N과 B가 주어진다. (2 ≤ N ≤ 5, 1 ≤ B ≤ 100,000,000,000) 둘째 줄부터 N개의 줄에 행렬의 각 원소가 주어진다. 행렬의 각 원소는 1,000보다 작거나 같은 자연수 또는 0이다. 출력 첫째 줄부터 N개의 줄에 걸쳐 행렬 A를 B제곱한 결과를 출력한다. 문제유형 수학 분할 정복 분할 정복을 이용한 거듭제곱 선형대수학 행렬을 n제곱시키는 (개념적으로는)간단한문제. 하지만 시간 제한(1초)에 비해 B값이 커서 최적화를 시켜야 한다. 보통 행렬의 제곱을 최적화하는 연산은 행렬..