본문 바로가기
Development/Baekjoon

[C#] 1037번: 약수

by Mobics 2025. 12. 1.

목차


    백준 단계별로 풀어보기

    25.12.01

    18단계: 심화 2


    1037번: 약수

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

     

    문제 풀이

    : N의 약수 중 1과 N이 아닌 약수 A에 대하여 A의 최솟값과 A의 최댓값을 곱하면 N을 구할 수 있다.

    1. StreamReader로 입력값을 받아 int값으로 변환하여 N의 진짜 약수의 개수를 담을 변수 count 에 담고, 진짜 약수들을 입력받아 int값으로 변환하여 int형 배열 factors 에 담는다.
    2. 진짜 약수는 1,000,000보다 작거나 같고 2보다 크거나 같은 자연수미여 중복되지 않으므로 최솟값 min 은 1,000,000 그리고 최댓값 max 는 1 로 초기화한다.
    3. foreach 반복문을 통해 진짜 약수의 최솟값과 최댓값을 구한다.
    4. StreamWriter로 찾은 최솟값과 최댓값의 곱을 출력한다.

     

    정답 코드

    using System.IO;
    
    class Backjoon
    {
        static void Main(string[] args)
        {
            using var sr = new StreamReader(Console.OpenStandardInput());
            using var sw = new StreamWriter(Console.OpenStandardOutput());
    
            int count = int.Parse(sr.ReadLine());
            int[] factors = sr.ReadLine().Split().Select(int.Parse).ToArray();
    
            int min = 1000000;
            int max = 1;
    
            foreach (var f in factors)
            {
                if (f < min) min = f;
                if (f > max) max = f;
            }
            
            sw.Write(min * max);
        }
    }

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

    [C#] 25192번: 인사성 밝은 곰곰이  (0) 2025.12.02
    [C#] 1010번: 다리 놓기  (0) 2025.11.30
    [C#] 11050번: 이항 계수 1  (0) 2025.11.29
    [C#] 10872번: 팩토리얼  (0) 2025.11.28
    [C#] 24723번: 녹색거탑  (0) 2025.11.27