배운 점:
실수한 점: 음수를 포함한 숫자가 주어지는 문제인데 제대로 안읽어서 왜 안되는건가 헤맸다 😅😅
using System;
namespace ConsoleApp1
{
internal class Program
{
static void Main(string[] args)
{
// 입력받을 숫자의 개수 n 입력 받기
int n = int.Parse(Console.ReadLine());
int answer = 0;
int MAX_NUM = 1000000;
// 주어질 숫자는 -1,000,000 ~ 1,000,000
// 음수 전담 배열
int[] negativeNumArray = new int[MAX_NUM + 1];
// 양수 전담 배열
int[] positiveNumArray = new int[MAX_NUM + 1];
// 주어진 숫자가 각각 몇 개씩 있는지 array에 카운팅.
// 편의상 0은 positiveNumArray에 포함
for (int i = 0; i < n; i++)
{
int inputNum = int.Parse(Console.ReadLine());
if(inputNum >= 0) {
positiveNumArray[inputNum]++;
}
else if(inputNum < 0)
{
negativeNumArray[inputNum*-1]++;
}
}
// Console.WriteLine()을 쓰면 시간초과가 나서, 더 빠른 StreamWriter를 사용해 출력한다
using (var print = new System.IO.StreamWriter(Console.OpenStandardOutput()))
{
// 음수 영역 먼저 출력. 내림차순 해야하고, 출력시 -1 곱해야함
for(int targetNum = MAX_NUM; targetNum > 0; targetNum--)
{
if (negativeNumArray[targetNum] == 0) continue;
for (int j = 0; j < negativeNumArray[targetNum]; j++)
{
answer = targetNum * -1;
print.WriteLine(answer);
}
}
// 0과 양수 영역 출력. 출력시 오름차순
for (int targetNum = 0; targetNum <= MAX_NUM; targetNum++)
{
if (positiveNumArray[targetNum] == 0) continue;
for (int j = 0; j < positiveNumArray[targetNum]; j++)
{
answer = targetNum;
print.WriteLine(answer);
}
}
}
}
}
}
728x90
'알고리즘 문제 풀이 > 백준' 카테고리의 다른 글
[백준 1978번/C#] 소수 찾기 (0) | 2023.10.24 |
---|---|
[백준 10989번/C#] 수 정렬하기 (0) | 2023.10.24 |
[백준 10809번/C#] 알파벳 찾기 (0) | 2023.10.23 |
[백준 8958번/C#] OX퀴즈 (0) | 2023.10.23 |
[백준 2577번/C#] 숫자의 개수 (0) | 2023.10.23 |