본문 바로가기
프로그래밍/알고리즘

백준 5086번: 배수와 약수

by 만디기 2024. 3. 15.

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

 

5086번: 배수와 약수

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

www.acmicpc.net

 

(1) 내 해답 : 순차적으로 조건을 걸어 해결함

#include <cstdio>

int main()
{
    int a = 0, b = 0;
    
    while (true) 
    {
        scanf("%d %d", &a, &b);
        if ( ( a == 0 ) && ( b == 0 ) ) break;

        ( b % a == 0 ) 
            ? puts("factor")
            : ( a % b == 0 )
                ? puts("multiple")
                : puts("neither");

    }

    return 0;
}

 

(2) 다른 해답

- 나와 비슷한 방식이지만 언어의 특성을 활용함

#include <cstdio>
int a, b;
int main() {
// scanf는 더 이상 입력이 없으면(EOF) EOF 값(보통 -1)을 반환한다.
// 거기에 입력이 끝날 때가 아니면 0이 들어올 일이 없으므로 a가 0일 때 끝내도록 조건을 설정했다.
	while (scanf("%d %d", &a, &b) && a) puts(a%b ? b%a ? "neither" : "factor" : "multiple");
	return 0;
}