728x90
using System;
class Program
{
static void Main(string[] args)
{
int N = int.Parse(Console.ReadLine());
int[] arr = new int[10001];
for (int i = 0; i < N; i++)
arr[int.Parse(Console.ReadLine())]++;
for (int i = 0; i < 10000; i++)
{
if (arr[i] != 0)
{
for (int j = 0; j < arr[i]; j++)
Console.WriteLine(i);
}
}
}
}
메모리를 아끼기 위해 2751번에서 사용했던 Array.Sort 방식이 아니라 다른 방식을 사용해야 했다. 구글링을 통해서 필요한 최대 크기의 배열을 미리 생성한뒤 숫자를 입력받아 필요한 정보만 출력하는 방법을 사용했다. 하지만! 시간초과였다.
다시 구글링을 해보니 StreamReader와 StreamWriter를 사용해야했다.
using System;
class Program
{
static void Main(string[] args)
{
using var sr = new StreamReader(Console.OpenStandardInput());
using var sw = new StreamWriter(Console.OpenStandardOutput());
int N = int.Parse(sr.ReadLine());
int[] arr = new int[10001];
for (int i = 0; i < N; i++)
arr[int.Parse(sr.ReadLine())]++;
for (int i = 0; i <= 10000; i++)
{
if (arr[i] != 0)
{
for (int j = 0; j < arr[i]; j++)
sw.WriteLine(i);
}
}
}
}
정답 코드다.
✅ StreamReader
특정한 인코딩의 바이트 스트림에서 문자를 읽어주는 클래스다.
✅ StreamWriter
특정한 인코딩의 스트림에 문자를 쓰는 클래스다.
둘다 주로 텍스트 파일을 읽어올 때 사용하는 클래스다. 기초 네트워크에서 문자를 읽을 때도 사용한다. Console.ReadLine은 내부적으로 TextReader 객체를 사용하여 문자를 읽는다. 별 차이는 없다고 하지만 StreamReader가 더 빠르다.
728x90
'언어 > C#' 카테고리의 다른 글
[C#] SortedSet 중복 없는 배열 생성 (0) | 2023.07.25 |
---|---|
[C#] 백준 1929번 : 에라토스테네스의 체 방식(빠르게 소수 찾기) (0) | 2023.01.15 |
[C#] 백준 2581번 (0) | 2023.01.14 |
[C#] 백준 10757번 : 큰 수를 다룰 땐 BigInteger를 활용하자 (0) | 2023.01.12 |
[C#] 백준 2839번 (0) | 2023.01.12 |