일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Operating System
- 백준
- Spring
- 협업
- react-redux
- Java
- 코드업
- Redux
- 알고리즘
- 자료구조
- memory
- react
- 토이프로젝트
- 리덕스장바구니
- 분할메모리할당
- codeup
- 스프링
- 타입스크립트
- C++
- OS
- 일상
- 기초100제
- 공부
- js to ts
- error
- 정렬
- web
- 프로그래머스
- 파이썬
- CPU 스케줄링
- Today
- Total
목록백준 (138)
감자튀김 공장🍟
✔ 문제 ✔ 풀이 import sys input = sys.stdin.readline def factorial(x): num = 1 for i in range(1, x+1): num *= i return num t = int(input()) for _ in range(t): n, m = map(int, input().split()) res = factorial(m) // (factorial(n) * factorial(m-n)) print(res) ✔ 후기 뭔가 조합보다 dp가 먼저 생각났는데 아무리 생각해도 어떻게 풀어야할지 모르겠어서 처음부터 다시 생각했다. 조합론 문제기 때문에 nCk로도 풀 수 있었는데 왜 dp가 먼저 떠올랐는지... 하여튼 앞에서 푼 이항 계수 문제들처럼 factorial을 사용해..
✔ 문제 ✔ 풀이 👾 답안1 import sys input = sys.stdin.readline def factorial(x): if x == 0: return 1 return x * factorial(x-1) n, k = map(int, input().split()) print((factorial(n) // (factorial(k) * factorial(n-k))) % 10007) 👻 math 라이브러리 사용 import sys from math import factorial input = sys.stdin.readline n, k = map(int, input().split()) def binomal(n, k): return factorial(n) // factorial(k) // factorial(..
✔ 문제 ✔ 풀이 import sys input = sys.stdin.readline def factorial(x): if x == 0: return 1 return x * factorial(x-1) n, k = map(int, input().split()) print(factorial(n) // (factorial(k) * factorial(n-k))) ✔ 설명 ( n ) ( k ) 는 nCk로 나타낼 수 있다. nCk 공식은 위와 같이 풀 수 있기 때문에 factorial 재귀 함수를 만들어 문제를 풀면 된다.
✔ 문제 ✔ 풀이 import sys import math input = sys.stdin.readline n = int(input()) c = list(map(int, input().split())) for i in range(1, n): x = math.gcd(c[0], c[i]) print('{0}/{1}'.format((c[0] // x), (c[i] // x))) ✔ 설명 c[0]이 분모가 되기 때문에 c[0]과 나머지 c[i]의 최대공약수 x를 구한다. 최대공약수 x로 c[0]과 c[i]를 나눠 나온 몫으로 기약 분수 A/B를 출력하면 된다.
✔ 문제 ✔ 풀이 import sys import math input = sys.stdin.readline n = int(input()) nums = [int(input()) for _ in range(n)] nums.sort() temp = [] res = [] for i in range(1, n): # A-B, B-C 저장 temp.append(nums[i] - nums[i-1]) a = temp[0] for i in range(1, len(temp)): # A-B, B-C 최대 공약수 구하기 a = math.gcd(a, temp[i]) for i in range(2, int(a ** 0.5) + 1): # 탐색 범위를 줄이기 위해 제곱근 사용 if a % i == 0: res.append(i) re..
✔ 문제 ✔ 풀이 👾 유클리드 호제법 import sys input = sys.stdin.readline def gcd(x, y): while y > 0: x, y = y, x % y return x def lcm(x, y): return x * y // gcd(x, y) t = int(input()) for _ in range(t): a, b = map(int, input().split()) print(lcm(a, b)) 👻 math 라이브러리 사용 import math import sys input = sys.stdin.readline t = int(input()) for _ in range(t): a, b = map(int, input().split()) print(math.lcm(a, b))
✔ 문제 ✔ 풀이 import math a, b = map(int, input().split()) print(math.gcd(a, b)) print(math.lcm(a, b)) ✔ 후기 math 라이브러리를 사용하여 gcd, lcm 함수를 사용해 최대공약수와 최소공배수를 구할 수 있다. 라이브러리를 사용하지 않고 gcd, lcm 함수를 구현 하는 방법은 아래 링크를 참고하면 된다. https://good-potato.tistory.com/88 [Python] 유클리드 호제법으로 최대 공약수, 최소 공배수 구하기 사실 파이썬을 사용하면 유클리드 호제법 없이 math 라이브러리를 사용하여 빠르게 최대공약수와 최소공배수를 구할 수 있다. ✅ math 라이브러리 사용 import math a, b = map(i..
✔ 문제 ✔ 풀이 import sys input = sys.stdin.readline n = int(input()) divisors = list(map(int, input().split())) divisors.sort() print(divisors[0] * divisors[-1]) ✔ 설명 X의 약수 개수와 약수들을 입력받게 되는데, 입력받은 약수들을 정렬한 후 가장 작은 값과 가장 큰 값을 곱하면 X를 구할 수 있다. ex) 입력값: 6 3 4 2 12 6 8 >> 정렬 2 3 4 6 8 12 x = 2 * 12
✔ 문제 ✔ 풀이 import sys input = sys.stdin.readline while True: x, y = map(int, input().split()) if x == 0 and y == 0: break if y % x == 0: print("factor") elif x % y == 0: print("multiple") else: print("neither") ✔ 후기 (◕ヮ◕)〜⊹
✔ 문제 ✔ 풀이 import sys import math input = sys.stdin.readline t = int(input()) for _ in range(t): x1, y1, x2, y2 = map(int, input().split()) p = int(input()) count = 0 for _ in range(p): cx, cy, cr = map(int, input().split()) dis1 = math.sqrt((x1 - cx) ** 2 + (y1 - cy) ** 2) dis2 = math.sqrt((x2 - cx) ** 2 + (y2 - cy) ** 2) if cr > dis1 and cr > dis2: pass elif cr > dis1: count += 1 elif cr > dis2..