AngelPlayer`s Diary

링크

https://www.acmicpc.net/problem/5086

 

5086번: 배수와 약수

각 테스트 케이스마다 첫 번째 숫자가 두 번째 숫자의 약수라면 factor를, 배수라면 multiple을, 둘 다 아니라면 neither를 출력한다.

www.acmicpc.net

 

 

 

문제 해석

두 수를 입력받아 첫 번째 숫자가 두 번째 숫자에 대하여 약수인지, 배수인지, 의미 없는 수인지를 확인하는 문제이다.

(각각 factor, multiple, neither)

 

(※ 약수 또는 배수라는 가정하에)

a < b == factor

a > b == multiple

 

 

 

 

코드

 

 

 

코드해석

# input

무한 반복처리하여 두 개의 숫자를 입력받고, 입력 받은 데이터는 리스트 형태로 만든다.

 

만약 입력 받은 데이터가 '0 0'이라면 입력 종료를 의미하므로 반복에서 빠져나오고, 그렇지 않다면 수를 저장하는 리스트에 데이터를 append한다. (line 8-11)

 

 

# process

for문을 통해 수를 저장한 리스트에서 비교할 두 수를 순서대로 꺼내 비교를 진행한다.

 

만약 a>b인 경우 b가 a와 같거나 클 때까지 수를 점차 증가시켜 b가 a와 숫자가 동일하다면 multiple, b가 a보다 크다면 neither를 결과 리스트에 넣는다. b가 a보다 작다면 증감식을 통해 b를 증가시킨다. (line 14-27)

 

b<a인 경우 반대로 연산을 수행하며, 배수인 a가 b와 같다면 factor를, a가 b보다 크다면 neither를 결과 리스트에 넣는다. (line 28-39)

 

 

# output

결과가 한줄씩 나타나야하므로 for문을 통해 결과 리스트에서 하나씩 불러와 출력한다.

 

 

발생한 문제 & 해결 방안

배수인 a(또는 b)와 b(또는 a)를 비교하는 연산에서 배수인 값이 아닌 원래 값을 가지고 비교하여 무한 반복에 들어가는 실수를 하였다.

 

vscode의 디버그 기능을 이용하여 수정하고 해결하였다.

 

 

 

 

 

 

해당 코드는 에디터가 코드 연습을 위해 직접 작성하였습니다.

혹시 오류가 있거나 더 좋은 코드 방향성을 아시는 분은 댓글로 남겨주시면 감사하겠습니다..!

공유하기

facebook twitter kakaoTalk kakaostory naver band