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 |