Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 1141번
- hashing
- 해싱
- 백준 14501번
- 백준 1246번
- CSS
- 해설
- BTREE
- 백준 1487번
- 한반도평화와공공외교
- 백준
- Python
- 파이썬
- 0의 개수
- 백준 11050번
- B-tree
- 문제 풀이
- 풀이
- 실버
- DP 알고리즘
- 챗봇
- 연산자 문제
- N과 M
- 알고리즘
- html
- 주창형 공공외교
- 이항계수
- 가치규범의 공공외교
- 풍선터뜨리기
- 1
Archives
- Today
- Total
SunFly의 코딩 및 정보 블로그
[파이썬(Python)] 백준 2609번 : 최대공약수와 최소공배수 본문
문제
두 개의 자연수를 입력받아 최대 공약수와 최소 공배수를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에는 두 개의 자연수가 주어진다. 이 둘은 10,000이하의 자연수이며 사이에 한 칸의 공백이 주어진다.
출력
첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다.
풀이
두 수 중 하나 이상이 0일 경우를 포함시키지 않고 풀이하였다.
import sys input = sys.stdin.readline N = [] N = list(map(int, input().split())) num1 = [] num2 = [] num3 = [] res1 = [] for i in range(1, N[0]+1): if (N[0] % i) == 0: num1.append(N[0] / i) for j in range(1, N[1]+1): if (N[1] % j) == 0: num2.append(N[1] / j) for k in num1: for l in num2: if k == l: res1.append(k) res1 = max(res1) res2 = N[0] * N[1] // res1 print(res1) print(res2) |
당연하게도 틀린답이라고 나왔지만 기본적으로 옳은 식이다.
따라서 max와 min, 즉 최대와 최소를 구하는 함수를 이용하여 풀었다.
def calc(x, y): x, y = max(x, y), min(x, y) if y == 0: return x else: return calc(y, x % y) N, M = map(int, input().split()) print(calc(N, M)) print(N * M // calc(N, M)) |
'백준(BaekJoon)' 카테고리의 다른 글
[파이썬(Python)] 백준 11050번 : 이항 계수 1 (0) | 2022.02.25 |
---|---|
[파이썬(Python)] 백준 3036번 : 링 (0) | 2022.02.25 |
[파이썬(Python)] 백준 1037번 : 약수 (0) | 2022.02.24 |
[파이썬(Python)] 백준 5086번 : 배수와 약수 (0) | 2022.02.24 |
[파이썬(Python)] 백준 1541번 : 잃어버린 괄호 (0) | 2022.02.24 |