본문 바로가기
Development/Baekjoon

[C#] 5086번: 배수와 약수

by Mobics 2025. 9. 13.

목차


    백준 단계별로 풀어보기

    25.09.13

    9단계: 약수, 배수와 소수 1


    5086번: 배수와 약수

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

     

    문제 풀이

    >> 문제를 풀기 위해 알아야 할 개념

    - 배수와 약수의 관계

    : 두 수 중에 큰 수를 작은 수로 나눴을 때 나머지가 없이 딱 떨어진다면, 작은 수는 큰 수의 약수이고 큰 수는 작은 수의 배수이다.

     

    >> 풀이

    1. 출력할 변수를 string 타입으로 선언한다.
    2. while 반복문을 통해 계속 반복하며 입력받은 두 자연수를 int값으로 각각 변환시킨다.
    3. 마지막 줄에는 0이 2개 주어지므로 입력받은 두 자연수가 0이라면 반복문을 탈출시켜 코드를 종료시킨다.
    4. 첫 번째 숫자가 두 번째 숫자보다 클 때, 삼항연산자를 통해 첫 번째 숫자를 두 번째 숫자로 나눈 나머지가 0이라면 첫 번째 숫자가 두 번째 숫자의 배수이므로, result에 'multiple'을, 아니라면 배수와 약수 둘다 아니므로 result에 'neither'를 담고 출력한다.
    5. 두 번째 숫자가 첫 번째 숫자보다 클 때, 삼항연산자를 통해 첫 번째 숫자를 두 번째 숫자로 나눈 나머지가 0이라면 첫 번째 숫자가 두 번째 숫자의 약수이므로, result에 'factor'를, 아니라면 배수와 약수 둘다 아니므로 result에 'neither'를 담고 출력한다.

     

    정답 코드

    class Backjoon
    {
        static void Main(string[] args)
        {
            string result = "";
            
            while (true)
            {
                string[] input = Console.ReadLine().Split();
                int num1 = int.Parse(input[0]);
                int num2 = int.Parse(input[1]);
    
                if (num1 == 0 && num2 == 0)
                    break;
    
                if (num1 > num2)
                {
                    result = num1 % num2 == 0 ? "multiple" : "neither";
                    Console.WriteLine(result);
                }
                else
                {
                    result = num2 % num1 == 0 ? "factor" : "neither";
                    Console.WriteLine(result);
                }
            }
        }
    }

    'Development > Baekjoon' 카테고리의 다른 글

    [C#] 2501번: 약수 구하기  (0) 2025.09.14
    [C#] 2869번: 달팽이는 올라가고 싶다  (0) 2025.09.12
    [C#] 1193번: 분수찾기  (0) 2025.09.11
    [C#] 2292번: 벌집  (0) 2025.09.10
    [C#] 2903번: 중앙 이동 알고리즘  (0) 2025.09.09