
문제 www.acmicpc.net/problem/2609 2609번: 최대공약수와 최소공배수 첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다. www.acmicpc.net 코드 def gcd(a,b): if b == 0: return a else: return gcd(b, a%b) a,b = map(int,(input().split())) g=gcd(a,b) lcm = g * (a//g) * (b//g) print(g) print(lcm) 코드설명 유클리드 호제법은 최대공약수 구하는 공식이다. a,b의 최대공약수는 b와 a%b의 최대공약수와 같다. 즉, GCD(a, b) = GCD(b, a%b) gcd(24,16) => gcd(16,8) =..

문제 www.acmicpc.net/problem/11399 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net 코드 N = int(input()) time = list(map(int, input().split())) time.sort() sum=0 for i in range(N): for j in range(i+1): # i가 0~4까지들어오기 때문에 +1을 해줘서 i가 0일떄도 for문이 돌아 가게 하고 j도 4까지 하기 위해 1을 더한 것이다 sum += time[j] print(sum) 코드설명 그리디 알고리즘으로 문제를 풀었다. 입력값들..

문제 www.acmicpc.net/problem/11047 11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) www.acmicpc.net 코드 N, K = map(int, input().split()) d = [int(input()) for _ in range(N)] d.sort(reverse=True) result = 0 for i in range(N): if d[i] > K: continue else: result += K // d[i] K = K % d[i] print(r..

문제 www.acmicpc.net/problem/1932 1932번: 정수 삼각형 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다. www.acmicpc.net 코드 T = int(input()) q = [] for i in range(T): q.append(list(map(int,(input().split())))) for i in range(1,T): for j in range(len(q[i])): if j==0: # 맨왼쪽 q[i][j] += q[i-1][j] elif j==i: # 맨오른쪽 q[i][j] += q[i-1][j-1] else: # 가운데 q[i][j] += max(q[i-1][j], q[i-1][j-1]) prin..