원래 StringBuilder 를 쓰는 이유는 출력하고 싶은 내용을 모아두었다가 한꺼번에 출력하는 방법으로 출력에 걸리는 시간을 최소화하기 위해 사용합니다.
하지만 이 문제에서는 메모리 제한이 극도로 빡빡하기 때문에 이와 같은 방법을 사용할 수 없습니다.
타협점으로는 주기적으로 StringBuilder 에 모아 둔 내용을 출력한 뒤 StringBuilder 를 비우는 방법을 사용할 수 있습니다.
10989번 - 수 정렬하기 3
여러가지 실험을 하면서 검증을 해 본 결과 Console.Write 의 수행속도가 기대했던 것 보다 더 느린 것 같습니다.
수동으로 StringBuilder 로 관리하는 것으로는 원하는 성능을 낼 수 없고,
대신 내부에서 출력 버퍼를 자동으로 관리해주는 StreamWriter 를 써야할 듯 합니다.
StreamWriter 를 이용하여 표준 출력에 출력하기 위해서는 var out = new System.IO.StreamWriter(Console.OpenStandardOutput());
을 사용하면 됩니다.
그 이후에는 out.Write(data)
또는 out.WriteLine(data)
이런 식으로 출력을 할 수 있고
출력을 모두 끝마친 후 out.Close()
메소드를 호출하면 됩니다.
댓글을 작성하려면 로그인해야 합니다.
dew0135 2년 전
int[10001] count 한 개 사용하고 StringBuilder 사용했는데 여기서 무엇을 어떻게 바꿔야 메모리초과가 안 될까요?