프로그래밍/파이썬 python

단계별로 풀어보기 9 - 약수, 배수와 소수(1)

idealtrue 2023. 8. 12. 23:17
728x90

문제번호 5086번 배수와 약수

 

입력은 여러 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 두 개의 다른 자연수로 이루어져 있다. 마지막 두 줄에는 0이 2개 입력된다. 각 테스트 케이스마다 첫 번째 숫자가 두 번째 숫자의 약수라면 factor를, 배수라면 multiple을, 둘 다 아니라면 neither를 출력해야 한다.

 

답안 :

1  import sys
2  while True :
3      A, B = map(int, sys.stdin.readline().split())
4      if A == 0 and B == 0 :
5          break    
6      elif A % B == 0 :
7          print('multiple')
8      elif B % A == 0 :
9          print('factor')
10     else:
11         print('neither')

 

comment :

# 표준 입력을 받기 위해서 sys모듈을 가져온다.

# 0 0이 나오기 전까지는 계속 입력을 받아야 하기 때문에 while True: 를 사용하여 무한 반복시키고, 0 0이 나올 때 빠져나오도록 코드를 작성해준다. 이때 6번 이후의 코드들을 4번 코드보다 먼저 작성하게 된다면 0 0이 나올때 0으로 나눌 수 없는 상황이 먼저 발생하여 오류가 생기므로 4번을 먼저 작성해 주어야 한다.

 

----------------------------------------------------------

 

문제번호 2501번 약수 구하기

 

첫째 줄에 N K가 입력된다. 첫째 줄에 N의 약수들 중 K번째로 작은 수를 출력해야 한다. 만일 N의 약수의 개수가 K개보다 적어서 K번째 약수가 존재하지 않을 경우에는 0을 출력해야 한다.

 

답안 :

1 divisor = []
2 N, K = map(int,input().split())
3 for n in range(1,N+1) :
4     if N % n == 0 :
5         divisor.append(n)
6 try :
7     print(divisor[K-1])
8 except IndexError :
9     print(0)

 

comment :

# 입력을 받고,  N에 대해서 1부터 N까지 나누는 행위를 반복하여 나누어 떨어진다면 나눈 숫자를 약수 리스트에 더해주는 함수를 작성한다.

# try, except문을 사용하여 만약에 인덱스가 없다면 0을 출력하도록 한다.

728x90