본문 바로가기
알고리즘/백준 solved.ac PS

[백준][solved.ac][Silver 5][Python] 14914번 : 사과와 바나나 나눠주기

by 빛밤하늘 2021. 6. 9.
반응형

밑의 링크는 백준에서의 문제 링크입니다.

 

14914번: 사과와 바나나 나눠주기

아름이가 나누어 줄 수 있는 경우를 모두 출력해야 하며, 각 경우마다 친구의 수, 사과 개수, 바나나 개수 차례로 한 줄에 각각 빈칸으로 구분하여 출력한다. 각 경우마다 중복없이 한 번만 출력

www.acmicpc.net

 

 

 

 

 

 

 

 

파이썬 코드와 결과입니다.

# readline을 사용하기 위해 import합니다.
from sys import stdin
# gcd를 사용하기 위해 import합니다.
from math import gcd

# 첫째 줄에 사과의 개수 a, 바나나의 개수 b를 공백으로 구분해 입력합니다.
# 1 <= a, b <= 1,000
# 각각 정수형으로 변환합니다.
a, b = map(int, stdin.readline().split(' '))
# a, b의 최대공약수를 저장하는 변수를 선언합니다.
ab_gcd = gcd(a, b)

# 친구의 수를 1부터 ab_gcd의 절반까지 반복합니다.
for friend in range(1, ab_gcd // 2 + 1):
    # ab_gcd를 현재 친구의 수로 나누었을 때 나머지가 0이라면
    if ab_gcd % friend == 0:
        # 친구의 수, 사과 개수, 바나나 개수를 차례대로 출력 형식에 맞게 출력합니다.
        print(friend, a // friend, b // friend)

# 친구의 수가 ab_gcd일 때의 친구의 수, 사과 개수, 바나나 개수를 차례대로 출력 형식에 맞게 출력합니다.
print(ab_gcd, a // ab_gcd, b // ab_gcd)

결과

 

맞았습니다 결과를 보고 나서 다른 사람들의 파이썬 결과를 보니

저의 코드보다 실행 시간이 빠른 코드들이 대부분이었습니다.

실행 시간을 줄여보는 방법을 좀 더 공부해야겠습니다.

 

 

 

※ 궁금한 부분, 이상한 점 및 오타는 댓글에 부탁드립니다.

※ 더 효율적이고 빠른 정답을 환영합니다.

반응형

댓글