본문 바로가기

반응형

JS

(20)
백준 js 11653: 소인수분해 문제 정수 N이 주어졌을 때, 소인수분해하는 프로그램을 작성하시오. 입력 첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다. 출력 N의 소인수분해 결과를 한 줄에 하나씩 오름차순으로 출력한다. N이 1인 경우 아무것도 출력하지 않는다. 예제 입력 1 72 예제 출력 1 2 2 2 3 3 풀이 작은수부터 오름차순으로 루프문을 돌며 루프문에 해당하는 현재값으로 나누어 떨어질 때까지 나눈다. 전체코드
백준 js 17103: 골드바흐의 파티션 문제 골드바흐의 추측: 2보다 큰 짝수는 두 소수의 합으로 나타낼 수 있다. 짝수 N을 두 소수의 합으로 나타내는 표현을 골드바흐 파티션이라고 한다. 짝수 N이 주어졌을 때, 골드바흐 파티션의 개수를 구해보자. 두 소수의 순서만 다른 것은 같은 파티션이다. 입력 첫째 줄에 테스트 케이스의 개수 T (1 ≤ T ≤ 100)가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 N은 짝수이고, 2 < N ≤ 1,000,000을 만족한다. 출력 각각의 테스트 케이스마다 골드바흐 파티션의 수를 출력한다. 예제 입력 1 5 6 8 10 12 100 예제 출력 1 1 1 2 1 6 풀이 입력 예제 중 가장 큰 수를 받아서 그 수까지의 수열을 담는 배열을 만든다. let maxnum = Math.max(....
백준 js 1212: 8진수 2진수 문제 8진수가 주어졌을 때, 2진수로 변환하는 프로그램을 작성하시오. 입력 첫째 줄에 8진수가 주어진다. 주어지는 수의 길이는 333,334을 넘지 않는다. 출력 첫째 줄에 주어진 수를 2진수로 변환하여 출력한다. 수가 0인 경우를 제외하고는 반드시 1로 시작해야 한다. 예제 입력 1 314 예제 출력 1 11001100 풀이 이 문제가 정답 비율이 낮은 이유,, 0인것 같다 그냥 수가 0인경우를 제외하고는 반드시 1로 시작해야한다고만 명시되어 있어서 이 부분만 처리했는데, 찾아보니 000인 경우도 0으로 변환해주어야 한다. (맞는말이긴한데) 스위치문을 사용해서 0-9까지 변환 케이스 문을 만드는 방법이 있고 자릿수를 빼주면서 0을 만드는 방법이 있는데 케이스문이 더 빠른 것 같다. 전체코드 const ..
백준 js 1373: 2진수 8진수 문제 2진수가 주어졌을 때, 8진수로 변환하는 프로그램을 작성하시오. 입력 첫째 줄에 2진수가 주어진다. 주어지는 수의 길이는 1,000,000을 넘지 않는다. 출력 첫째 줄에 주어진 수를 8진수로 변환하여 출력한다. 예제 입력 1 11001100 예제 출력 1 314 풀이 2진수에서 8진수로 변환하면된다. 기존에 js에 있는 메서드들로, toString(n) // 10진수를 n진수로 변환 parseInt(num, n) // n진수인 num을 10 진수로 변환 하는 방법으로 하려 했는데, 이는 input값이 Number 객체의 길이를 넘어감으로 안되고, 이진수 숫자를 뒤에서부터 세개씩 묶어서 각 자릿수곱해 더해주면 8진수로 변환 가능하다. 2가지 방법이 있다. 1️⃣ 비트 자릿수 각 비트를 3개씩 꺼내서..
백준 js 17087: 숨바꼭질 6 문제 수빈이는 동생 N명과 숨바꼭질을 하고 있다. 수빈이는 현재 점 S에 있고, 동생은 A1, A2, ..., AN에 있다. 수빈이는 걸어서 이동을 할 수 있다. 수빈이의 위치가 X일때 걷는다면 1초 후에 X+D나 X-D로 이동할 수 있다. 수빈이의 위치가 동생이 있는 위치와 같으면, 동생을 찾았다고 한다. 모든 동생을 찾기위해 D의 값을 정하려고 한다. 가능한 D의 최댓값을 구해보자. 입력 첫째 줄에 N(1 ≤ N ≤ 105)과 S(1 ≤ S ≤ 109)가 주어진다. 둘째 줄에 동생의 위치 Ai(1 ≤ Ai ≤ 109)가 주어진다. 동생의 위치는 모두 다르며, 수빈이의 위치와 같지 않다. 출력 가능한 D값의 최댓값을 출력한다. 예제 입력 1 3 3 1 7 11 예제 출력 1 2 예제 입력 2 3 81 ..
백준 js 6913: GCD 합 문제 양의 정수 n개가 주어졌을 때, 가능한 모든 쌍의 GCD의 합을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수 t (1 ≤ t ≤ 100)이 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있다. 각 테스트 케이스는 수의 개수 n (1 < n ≤ 100)가 주어지고, 다음에는 n개의 수가 주어진다. 입력으로 주어지는 수는 1,000,000을 넘지 않는다. 출력 각 테스트 케이스마다 가능한 모든 쌍의 GCD의 합을 출력한다. 예제 입력 1 3 4 10 20 30 40 3 7 5 12 3 125 15 25 예제 출력 1 70 3 35 풀이 1번째 줄에 총 몇개의 테스트 케이스가 주어지는 지가 나와있고, 1번째 줄 제외 모든 줄 맨 앞에는 각 몇개의 수가 올지 나와있다. 그렇기 때문..
백준 js 2004: 조합 0의 개수 풀이 nCm(조합)에서 끝자리 0의 개수를 구하면 된다. 조합 공식은 n! / m! (n-m)! 이다. 만약 저 조합의 값을 구하고 0을 구하려고 한다면 원하는 답이 나오지도 않을 뿐 더러 시간 초과 걸릴 것이다. 위 값을 구하려고 한다면 Number 범위를 넘어버린다. 그렇기 때문에 각 팩토리얼 당 0의 개수를 구해서 더하고 빼주면 된다. 0의 개수를 구하기 위해서는 소인수 분해해서 5의 개수와 2의 개수를 알아야한다. 팩토리얼은 2의 개수가 항상 5보다 많거나 적기 때문에 5의 개수만 구하면 됐지만, 조합은 알 수 없기 때문에 2와 5를 모두 구해야 한다. n! / m! (n-m)!이기 때문에 n!의 2와 5의 개수를 구하고 그 값에서 m!의 2와 5의 개수를 빼고 (n-m)!의 2와 5의 개수를 빼..
백준 js 1676: 팩토리얼 0의 개수 문제 N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N이 주어진다. (0 ≤ N ≤ 500) 출력 첫째 줄에 구한 0의 개수를 출력한다. 예제 입력 1 10 예제 출력 1 2 예제 입력 2 3 예제 출력 2 0 풀이 0이 올 수 있는 것은 10^n 인 수에서 가능하다. 예를 들어 100라는 수가 있다면, 100 = [10^2] = [[5*2]^2] = [5*2 * 5*2]로 표현이 가능하고, 이러한 수의 개수를 찾기위해서는 이렇게 5*2를 만들 수 있는 5가 몇개 있는지 찾아보면 된다. (x! 에서 2는 항상 5보다 많거나 같기 때문) 예를 들어 10!이라는 수가 있다고 해보자 10! = 1 * 2 * ... * 5 * ... *10 이..