backjeon/Bronze

Baekjoon(백준) - 5086 (배수와 약수) | Python

SecLogs YJ 2026. 3. 16. 08:17
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")

 

이 코드는 두 수가 주어졌을 때 약수, 배수 관계를 판단하는 프로그램이다.

입력은 여러 줄로 주어지며 0 0 이 입력되면 프로그램이 종료된다.

 

1. 무한 반복문 

while True:

 

입력이 여러 테스트 케이스로 계속 들어오기 때문에, 종료 조건이 나올 때까지 반복문을 계속 실행한다.

 

2. 여러 정수 입력 받기

a, b = map(int, input().split())

 

한 줄에서 두 개의 숫자를 입력받는다.

 

사용된 개념

  • input() : 문자열 입력
  • split() : 공백 기준 문자열 분리
  • map(int, ... : 문자열을 정수로 변환

 

3. 종료 조건

if a == 0 and b == 0:
    break

 

문제에서 마지막 입력이 0 0 이라고 명시되어 있다.

따라서 두 값이 모두 0이면 반복문을 종료한다.

 

break : 현재 반복문을 즉시 종료하는 명령어이다.

 

4. 약수/배수/둘 다 아닌 경우 판별

    if b % a == 0:
        print("factor")
    elif a % b == 0:
        print("multiple")
    else:
        print("neither")

 

%는 나머지 연산자이다.

 

즉, a % b로 나누어 떨어지면 배수관계, b % a로 나누어 떨어지면 약수 관계를 의미한다.

 

 


👉 Baekjoon(백준) - 5086 (배수와 약수)