본문 바로가기

Programming [Python]

(411)
#122 백준 파이썬 [3053] 택시 기하학 https://www.acmicpc.net/problem/3053 import math R = int(input()) print(format(math.pi * (R ** 2), '6f')) print(format(2*(R**2), '6f'))
#121 백준 파이썬 [3009] 네 번째 점 https://www.acmicpc.net/problem/3009 #Solution 리스트에 저장했다 빼는 루트로 해결한다. dots = [] x = [] y = [] for _ in range(3): dots.append(list(map(int, input().split()))) for [a, b] in dots: if a in x: x.remove(a) else: x.append(a) if b in y: y.remove(b) else: y.append(b) print(x[0], y[0])
#120 백준 알고리즘 [3036] 링 https://www.acmicpc.net/problem/3036 #Solution 분수함수인 fractions 모듈의 Fraction 을 이용하면 된다. 최대공약수를 수학적으로 계산해도 좋지만 해당 모듈도 상당히 빠르게 계산해준다. from fractions import Fraction N = int(input()) ring_list= list(map(int, input().split())) for i in range(1, N): answer = Fraction(ring_list[0],1)/Fraction(ring_list[i],1) print(answer.numerator,'/',answer.denominator,sep = '')
#119 백준 파이썬 [1085] 직사각형에서 탈출 https://www.acmicpc.net/problem/1085 #Solution x, y, w, h= map(int, input().split()) result = [] result.append(w - x) result.append(x - 0) result.append(h - y) result.append(y - 0) print(min(result))
#118 백준 파이썬 [2609] 최대공약수와 최소공배수 https://www.acmicpc.net/problem/2609 #Solution 유클리드 호제법으로 최대공약수를 구한다. a, b = map(int, input().split()) def gcd(x,y): mod = x % y while mod >0: x = y y = mod mod = x % y return y def lcm(x, y): return x * y // gcd(x,y) print(gcd(a, b)) print(lcm(a, b))
#117 백준 파이썬 [15652] N과 M (4) - 중복 조합 https://www.acmicpc.net/problem/15652 #Solution https://claude-u.tistory.com/161 참고. 중복 조합 메써드인 combinations_with_replacement로 바꾸어서 푼다. 수학적으로는 nHr이다. import itertools N, M = map(int, input().split()) num_list = [i for i in range(1, N+1)] for num in itertools.combinations_with_replacement(num_list, M): for i in num: print(i, end = ' ') print(end = '\n')
#116 백준 파이썬 [15651] N과 M (3) - 중복 순열 https://www.acmicpc.net/problem/15651 #Solution https://claude-u.tistory.com/161 참고. 중복 순열을 위 해 product 메써드를 사용한다. import itertools N, M = map(int, input().split()) num_list = [i for i in range(1, N+1)] for num in itertools.product(num_list, repeat = M): for i in num: print(i, end = ' ') print(end = '\n')
#115 백준 파이썬 [15650] N과 M (2) - 조합 https://www.acmicpc.net/problem/15650 #Solution https://claude-u.tistory.com/161 와 크게 다르지 않다. permutations을 combinations로만 바꾸어 준다. import itertools N, M = map(int, input().split()) num_list = [i for i in range(1, N+1)] for num in itertools.combinations(num_list, M): for i in num: print(i, end = ' ') print(end = '\n')