C#

백준 C# 10989 문제 풀이

psb08 2024. 11. 10. 20:53
728x90

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

목차

1. 설명

 

2. 내 코드

 

3. 문제 풀이 해석 내용

 

4. 실행 결과

 

설명

백준 브론즈 1 문제 입니다.

문제명 : 수 정렬하기 3

 

내 코드

int N = int.Parse(Console.ReadLine());

int MAX_NUM = 10000;
int[] countArray = new int[MAX_NUM + 1];

int temp = 0;

for (int i = 0; i < N; i++) 
{
    temp = int.Parse(Console.ReadLine()); countArray[temp]++;
}

using (var print = new System.IO.StreamWriter(Console.OpenStandardOutput()))
{
    for (int i = 0; i <= MAX_NUM; i++)
    {
        if (countArray[i] == 0) continue;

        for (int j = 0; j < countArray[i]; j++)
        {
            print.WriteLine(i);
        }
    }
}

 

문제 풀이 해석 내용

 

입력 처리

int N = int.Parse(Console.ReadLine());

사용자로부터 정수를 입력받아 N에 저장합니다. 

N은 입력받을 정수의 개수를 나타냅니다.

 

 

상수 및 배열 초기화

int MAX_NUM = 10000;
int[] countArray = new int[MAX_NUM + 1];

MAX_NUM은 입력받을 수의 최대값을 10,000으로 설정합니다.
countArray는 0부터 10,000까지의 각 숫자의 빈도를 저장할 배열입니다. 

배열의 크기는 MAX_NUM + 1로 설정되어 0부터 10,000까지 인덱스에 해당하는 빈도를 저장합니다.

 

 

빈도 계산

int temp = 0;

for (int i = 0; i < N; i++) 
{
    temp = int.Parse(Console.ReadLine()); 
    countArray[temp]++;
}

for 루프를 통해 N번 반복하면서 각 숫자를 입력받습니다.
입력받은 숫자를 temp에 저장한 후, countArray[temp]의 값을 증가시켜 해당 숫자의 빈도를 기록합니다.

 

 

결과 출력

using (var print = new System.IO.StreamWriter(Console.OpenStandardOutput()))
{
    for (int i = 0; i <= MAX_NUM; i++)
    {
        if (countArray[i] == 0) continue;

        for (int j = 0; j < countArray[i]; j++)
        {
            print.WriteLine(i);
        }
    }
}

StreamWriter를 사용하여 출력 스트림을 설정합니다. 이는 성능을 향상시키기 위해 사용됩니다.
첫 번째 for 루프는 0부터 10,000까지 각 숫자에 대해 반복합니다.
countArray[i]가 0이 아닌 경우 (즉, 해당 숫자가 입력된 경우), 내부 for 루프를 통해 그 숫자를 빈도만큼 출력합니다. 

이렇게 하면 입력된 숫자들이 오름차순으로 정렬되어 출력됩니다.

 

 

실행 결과

실행 결과

 

728x90

'C#' 카테고리의 다른 글

백준 C# 13241 문제 풀이  (0) 2024.11.13
백준 C# 11650 문제 풀이  (0) 2024.11.12
백준 C# 19532 문제 풀이  (3) 2024.11.09
백준 C# 2751 문제 풀이  (0) 2024.11.08
백준 C# 25305 문제 풀이  (0) 2024.11.07