반응형
츄르사려고 코딩하는 코집사입니다.
1. [백준 알고리즘] 백준 3036번 필터 파이썬(Python)
1) 문제번호 : 3036번
2) 문제 출처
https://www.acmicpc.net/problem/3036
2. 문제
상근이는 창고에서 링 N개를 발견했다. 상근이는 각각의 링이 앞에 있는 링과 뒤에 있는 링과 접하도록 바닥에 내려놓았다.
상근이는 첫 번째 링을 돌리기 시작했고, 나머지 링도 같이 돌아간다는 사실을 발견했다. 나머지 링은 첫 번째 링 보다 빠르게 돌아가기도 했고, 느리게 돌아가기도 했다. 이렇게 링을 돌리다 보니 첫 번째 링을 한 바퀴 돌리면, 나머지 링은 몇 바퀴 도는지 궁금해졌다.
링의 반지름이 주어진다. 이때, 첫 번째 링을 한 바퀴 돌리면, 나머지 링은 몇 바퀴 돌아가는지 구하는 프로그램을 작성하시오.
3. 제약사항
4. 입력
첫째 줄에 링의 개수 N이 주어진다. (3 ≤ N ≤ 100)
다음 줄에는 링의 반지름이 상근이가 바닥에 놓은 순서대로 주어진다. 반지름은 1과 1000를 포함하는 사이의 자연수이다.
5. 출력
출력은 총 N-1줄을 해야 한다. 첫 번째 링을 제외한 각각의 링에 대해서, 첫 번째 링을 한 바퀴 돌리면 그 링은 몇 바퀴 도는지 기약 분수 형태 A/B로 출력한다.
6. 풀이
- 기약분수로 만드는 방법은 두 수의 최대공약수를 구해서, 최대공약수로 두 수를 나누면 된다.
- 즉 12와 8의 최대공약수는 4인데, 4로 12, 4로 8을 나누면 3과 2가 되어 3/2가 된다.
7. 소스 코드
import sys
input = sys.stdin.readline
N = int(input()) # 링의 개수
li = list(map(int, input().split())) # 링 수
# 최대 공약수
def GCD(a,b) : # 항상 a 가 큰수
while b!=0 :
remain = a % b
a = b
b = remain
return a
target = li.pop(0)
for i in range(N-1) :
num = GCD(target, li[i])
print('{}/{}'.format(target//num, li[i]//num))
반응형
'알고리즘 > 백준 알고리즘' 카테고리의 다른 글
[백준 알고리즘] 백준 5532번 방학 숙제 파이썬(Python) (0) | 2021.07.19 |
---|---|
[백준 알고리즘] 백준 15700번 타일 채우기 4 파이썬(Python) (0) | 2021.07.16 |
[백준 알고리즘] 백준 11948번 과목선택 파이썬(Python) (0) | 2021.07.16 |
[백준 알고리즘] 백준 3273번 두 수의 합 파이썬(Python) (0) | 2021.07.13 |
[백준 알고리즘] 백준 1895번 필터 파이썬(Python) (0) | 2021.07.12 |
[백준 알고리즘] 백준 14606번 피자(Small) 파이썬(Python) (0) | 2021.07.12 |
[백준 알고리즘] 백준 1145번 적어도 대부분의 배수 파이썬(Python) (0) | 2021.07.10 |
[백준 알고리즘] 백준 19941번 햄버거 분배 파이썬(Python) (0) | 2021.07.10 |
최근댓글