본문 바로가기

반응형

알고리즘

(248)
[python/파이썬] 백준 폰 호석만 문제 폰 호석만은 진법 변환의 달인이다. 어떤 진법의 수가 주어져도 모든 다른 진법으로의 변환이 가능한 폰 호석만은 새로운 문제를 내기로 했다. 폰 호석만이 내는 문제는 다음과 같이 진행된다. 먼저 폰 호석만은 수 3개 X, A, B를 결정한다(0 ≤ X < 263, 2 ≤ A ≤ 36, 2 ≤ B ≤ 36, A ≠ B). 이 때 X는 10진법이다. 그 다음에 X를 A진법으로 표현한 수와 B진법으로 표현한 수를 종이에 써 놓는다. 그 다음에 종이에 써져 있는 두 개의 수를 여러분에게 보여주게 된다. 주어진 두 개의 수를 통해 원래 숫자인 X, A, B를 계산해주자. 만약 조건을 만족하는 (X, A, B)로 가능한 조합이 여러 개라면 "Multiple"을 출력하고, 가능한 조합이 없다면 "Impossibl..
[python/파이썬] 백준 9613 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 [소스 코드] import sys import math #gcd 사용위해 import itertools #combinations 사용위해 ..
[python/파이썬] 백준 21920 서로소 평균 문제 효성이는 길이가 N인 수열 A에서 X와 서로소인 수들을 골라 평균을 구해보려고 한다. 효성이를 도와 이를 계산해주자. 입력 첫 번째 줄에 입력될 수들의 개수 N이 주어진다. (2≤N≤500,000) 두 번째 줄에는 수열 A$A$를 이루는 자연수 Ai$A_{i}$ 가 공백으로 구분되어 주어진다. (2≤Ai≤1,000,000) 수열 A에 X와 서로소인 수가 최소 1개 이상 존재한다. 마지막 줄에는 X가 주어진다. (2≤X≤1,000,000) 출력 첫째 줄에 수열 A에서 X와 서로소인 수들의 평균을 출력한다. 절대/상대 오차는 10-6까지 허용한다. 예제 입력 1 복사 5 4 2 8 5 7 4 예제 출력 1 복사 6 [소스 코드] 서로소에 대한 정의는 두 수 사이에 1 말고는 공약수가 없는 것이다. 그리..
[python/파이썬] 백준 4134 다음 소수 문제 정수 n(0 ≤ n ≤ 4*109)가 주어졌을 때, n보다 크거나 같은 소수 중 가장 작은 소수 찾는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 n이 주어진다. 출력 각각의 테스트 케이스에 대해서 n보다 크거나 같은 소수 중 가장 작은 소수를 한 줄에 하나씩 출력한다. 예제 입력 1 복사 3 6 20 100 예제 출력 1 복사 7 23 101 [소스 코드] 처음에는 3중 for문을 이용해서 코드를 짰다. 당연히 시간 초과가 뜰 거라고 생각했지만 그냥 한 번 해봤다. 역시나 시간초과가 뜨길래 함수를 정의해서 했는데 이번에도 시간 초과가 떴다. 아래 코드와 비슷한데 소수를 판별하는 함수에서 for문의 범위만 달랐다. 어떤 ..
[python/파이썬] 백준 2960 에라토스테네스의 체 문제 에라토스테네스의 체는 N보다 작거나 같은 모든 소수를 찾는 유명한 알고리즘이다. 이 알고리즘은 다음과 같다. 2부터 N까지 모든 정수를 적는다. 아직 지우지 않은 수 중 가장 작은 수를 찾는다. 이것을 P라고 하고, 이 수는 소수이다. P를 지우고, 아직 지우지 않은 P의 배수를 크기 순서대로 지운다. 아직 모든 수를 지우지 않았다면, 다시 2번 단계로 간다. N, K가 주어졌을 때, K번째 지우는 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N과 K가 주어진다. (1 ≤ K < N, max(1, K) < N ≤ 1000) 출력 첫째 줄에 K번째 지워진 수를 출력한다. 예제 입력 1 복사 7 3 예제 출력 1 복사 6 예제 입력 2 복사 15 12 예제 출력 2 복사 7 예제 입력 3 복사 ..
[python/파이썬] 백준 11653 소인수분해 문제 정수 N이 주어졌을 때, 소인수분해하는 프로그램을 작성하시오. 입력 첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다. 출력 N의 소인수분해 결과를 한 줄에 하나씩 오름차순으로 출력한다. N이 1인 경우 아무것도 출력하지 않는다. 예제 입력 1 복사 72 예제 출력 1 복사 2 2 2 3 3 예제 입력 2 복사 3 예제 출력 2 복사 3 예제 입력 3 복사 6 예제 출력 3 복사 2 3 예제 입력 4 복사 2 예제 출력 4 복사 2 예제 입력 5 복사 9991 예제 출력 5 복사 97 103 [나의 접근 방법] 소인수분해라고 하면 주어진 값을 소수들의 곱으로 나타내는 것이다. 그래서 당연히 모든 소수를 이용하는 방법을 생각했다. 파이썬에서 혹시 소수를 제공하는지 찾아보았는데 없길래..
[python/파이썬] 백준 2581 소수 문제 자연수 M과 N이 주어질 때 M이상 N이하의 자연수 중 소수인 것을 모두 골라 이들 소수의 합과 최솟값을 찾는 프로그램을 작성하시오. 예를 들어 M=60, N=100인 경우 60이상 100이하의 자연수 중 소수는 61, 67, 71, 73, 79, 83, 89, 97 총 8개가 있으므로, 이들 소수의 합은 620이고, 최솟값은 61이 된다. 입력 입력의 첫째 줄에 M이, 둘째 줄에 N이 주어진다. M과 N은 10,000이하의 자연수이며, M은 N보다 작거나 같다. 출력 M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다. 단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다. 예제 입력 1 복사 60 100 예제 출력 ..
[python/파이썬] 백준 1934 최소공배수 최소공배수 시간 제한메모리 제한제출정답맞힌 사람정답 비율 1 초 128 MB 36828 21105 17977 58.837% 문제 두 자연수 A와 B에 대해서, A의 배수이면서 B의 배수인 자연수를 A와 B의 공배수라고 한다. 이런 공배수 중에서 가장 작은 수를 최소공배수라고 한다. 예를 들어, 6과 15의 공배수는 30, 60, 90등이 있으며, 최소 공배수는 30이다. 두 자연수 A와 B가 주어졌을 때, A와 B의 최소공배수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수 T(1 ≤ T ≤ 1,000)가 주어진다. 둘째 줄부터 T개의 줄에 걸쳐서 A와 B가 주어진다. (1 ≤ A, B ≤ 45,000) 출력 첫째 줄부터 T개의 줄에 A와 B의 최소공배수를 입력받은 순서대로 한 줄에..

반응형