[python] 백준 3036 : 링 3036번: 링 (acmicpc.net) 3036번: 링 출력은 총 N-1줄을 해야 한다. 첫 번째 링을 제외한 각각의 링에 대해서, 첫 번째 링을 한 바퀴 돌리면 그 링은 몇 바퀴 도는지 기약 분수 형태 A/B로 출력한다. www.acmicpc.net 실버 3 수학, 정수론, 유클리드 호제법 접근 기약분수는 분모와 분자를 더이상 약분할 수 없는 분수를 뜻한다. 따라서 분모와 분자의 최대공약수로 나누는 방법으로 구할 수 있다. 12와 3의 경우 최대공약수가 3이므로 각각을 3으로 나누면 4와 1이 된다. 이를 분자/분모의 형태로 출력하도록 만들어야 한다. 코드 (최대공약수를 반환하는 라이브러리 사용) import sys; input = sys.stdin.readlin..
[파이썬] 백준 9461 : 파도반 수열 https://www.acmicpc.net/problem/9461 9461번: 파도반 수열 오른쪽 그림과 같이 삼각형이 나선 모양으로 놓여져 있다. 첫 삼각형은 정삼각형으로 변의 길이는 1이다. 그 다음에는 다음과 같은 과정으로 정삼각형을 계속 추가한다. 나선에서 가장 긴 변의 www.acmicpc.net 실버 3 수학, DP 숫자들을 쭉 깔아서 보면 바로 규칙이 보일 것이다. 1, 1, 1, 2, 2, 3, 4, 5, 7, 9... i번째의 값은 i-3과 i-2번째의 값의 합으로 이루어져있는 피보나치 수열과 비슷한 규칙을 가지고 있다. import sys; input = sys.stdin.readline T = int(input()) for _ in range(..
[파이썬] 백준 13301 : 타일 장식물 https://www.acmicpc.net/problem/13301 13301번: 타일 장식물 대구 달성공원에 놀러 온 지수는 최근에 새로 만든 타일 장식물을 보게 되었다. 타일 장식물은 정사각형 타일을 붙여 만든 형태였는데, 한 변이 1인 정사각형 타일부터 시작하여 마치 앵무조개 www.acmicpc.net 실버 5 수학, DP 접근 그냥 피보나치 수열을 응용한 문제. 입력한 수를 K라고 가정하고, 피보나치 수열을 prime[1]~prime[K]로 구현한다면 문제에서 제시하는 그림은 다음과 같다. 코드 import sys K = int(sys.stdin.readline()) prime = [0]*(K+1) prime[1] = 1 for i in range(2,..
https://www.acmicpc.net/problem/4673 4673번: 셀프 넘버 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때, www.acmicpc.net 난이도 : 실버5 분류 : 수학, 구현, 브루트포스 1 : 문자열을 이용한 풀이 lst = list(range(1, 10001)) wow = [] for i in range(len(lst)): for j in str(i): i += int(j) wow.append(i) wow.sort() for i in lst: if i not in wow: pr..
https://www.acmicpc.net/problem/11050 11050번: 이항 계수 1 첫째 줄에 \(N\)과 \(K\)가 주어진다. (1 ≤ \(N\) ≤ 10, 0 ≤ \(K\) ≤ \(N\)) www.acmicpc.net 분류 : 수학, 구현, 조합론 이항 계수 : n개의 서로다른 것들 중에서 k개를 선택하는 조합의 경우의 수 n = 5, k = 2일때를 예로들면 [1, 2, 3, 4, 5] 에서 2개를 뽑는 조합의 수가 몇개인지를 구하는 것이다. (조합 : 순서를 생각하지 않고 뽑는 경우의 수) 여기서는 (1, 2), (1, 3), (1, 4), (1, 5), (2, 3), (2, 4), (2, 5), (3, 4), (3, 5), (4, 5) => 총 10개가 되겠다. 1 : combin..
https://www.acmicpc.net/problem/2869 2869번: 달팽이는 올라가고 싶다 첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000) www.acmicpc.net 알고리즘 분류 : 수학 코드 import math A, B, V = map(int, (input().split())) print(math.ceil((V-A)/(A-B))+1) 코드 풀이 반복문으로 문제를 접근하면 원하는 값은 출력될 것이나 시간 초과로 오답처리가 된다. 따라서 그냥 공식을 하나 만들어서 바로 출력하는 방법으로 해결해야 했다. 이동한 시간(일 수) = 도달해야 할 거리 / 하루 동안 이동한 거리이다. 낮에 A만큼 올라갔다가 밤에 B만큼 다시..