코딩테스트/백준
백준 > 단계별로 풀어보기 > 약수, 배수와 소수 > 5086번: 배수와 약수
나는야석사
2024. 7. 22. 21:48
문제
4 × 3 = 12이다.
이 식을 통해 다음과 같은 사실을 알 수 있다.
3은 12의 약수이고, 12는 3의 배수이다.
4도 12의 약수이고, 12는 4의 배수이다.
두 수가 주어졌을 때, 다음 3가지 중 어떤 관계인지 구하는 프로그램을 작성하시오.
- 첫 번째 숫자가 두 번째 숫자의 약수이다.
- 첫 번째 숫자가 두 번째 숫자의 배수이다.
- 첫 번째 숫자가 두 번째 숫자의 약수와 배수 모두 아니다.
입력
입력은 여러 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 10,000이 넘지않는 두 자연수로 이루어져 있다. 마지막 줄에는 0이 2개 주어진다. 두 수가 같은 경우는 없다.
출력
각 테스트 케이스마다 첫 번째 숫자가 두 번째 숫자의 약수라면 factor를, 배수라면 multiple을, 둘 다 아니라면 neither를 출력한다.
예제 입력 1 복사
8 16
32 4
17 5
0 0
예제 출력 1 복사
factor
multiple
neither
A, B = map(int, input().split())
if B % A == 0:
print('factor')
elif A % B == 0:
print('multiple')
else:
print('neither')
처음에 이렇게 작성했는데,
if B % A == 0:
ZeroDivisionError: integer division or modulo by zero
라는 제로디비전오류 발생... 0으로 나눌 수 없다는 뜻이다...
그래서 try except로
except ZeroDivisionError:
break
하려고 했지만 안됨ㅋㅋㅋㅋ
입출력 예시를 보면, 입력이 0 0일 땐 출력이 없다.
즉 루프를 멈추면 된다는 소리... 검색해보고 알았다.
while True:
A, B = map(int, input().split())
if A == 0 and B == 0:
break
if B % A == 0:
print('factor')
elif A % B == 0:
print('multiple')
else:
print('neither')
이게 답이다.. 로직은 맞았지만 문제를 잘 읽자..