jh05013   9달 전

다른 언어에 대해 알고 계시는 것이 있으면 답글로 달아 주세요.

C

scanf/printf는 충분히 빠릅니다.

C++

  • endl은 개행문자를 출력할 뿐만 아니라 출력 버퍼를 비우는 역할까지 합니다. 그래서 출력한 뒤 화면에 바로 보이게 할 수 있는데, 그 버퍼를 비우는 작업이 매우 느립니다. 게다가 온라인 저지에서는 화면에 바로 보여지는 것은 중요하지 않고 무엇이 출력되는가가 중요하기 때문에 버퍼를 그렇게 자주 비울 필요가 없습니다. 그래서 endl을 '\n'으로 바꾸는 것만으로도 굉장한 시간 향상이 나타납니다.
  • cin.tie(NULL)은 cin과 cout의 묶음을 풀어 줍니다. 기본적으로 cin으로 읽을 때 먼저 출력 버퍼를 비우는데, 마찬가지로 온라인 저지에서는 화면에 바로 보여지는 것이 중요하지 않습니다. 입력과 출력을 여러 번 번갈아서 반복해야 하는 경우 필수적입니다.
  • ios_base::sync_with_stdio(false)는 C와 C++의 버퍼를 분리합니다. 이것을 사용하면 cin/cout이 더 이상 stdin/stdout과 맞춰 줄 필요가 없으므로 속도가 빨라집니다. 단, 버퍼가 분리되었으므로 cin과 scanf, gets, getchar 등을 같이 사용하면 안 되고, cout과 printf, puts, putchar 등을 같이 사용하면 안 됩니다.

Java

BufferedWriter 외에도, StringBuilder로 출력을 모아 놓았다가 그 String을 System.out.println하는 방법도 있습니다.

Python

rstrip을 하라는 건 문자열 자체를 변수에 저장하고 싶을 때 얘기지, 개행문자가 맨 끝에 들어와도 int 변환이나 split()을 그대로 할 수 있습니다. 즉 int(sys.stdin.readline()), sys.stdin.readline().split() 이렇게 해도 아무 문제 없습니다. 참고로 이름이 꽤 길기 때문에 저는 input = sys.stdin.readline을 맨 처음에 함으로써 쓰는 편입니다.

Ruby

gets와 puts는 충분히 빠릅니다.

Go

bufio를 import하면 버퍼를 사용한 빠른 입출력이 가능합니다.

C#

StreamReader로 읽고, StringBuilder로 출력을 모아 놓았다가 그 String을 Console.WriteLine하는 방법이 있습니다. BufferedStream과 StringWriter로 조금 더 향상시킬 수 있는 것 같으나 자세한 것은 다른 분의 답변을 기다리겠습니다.

VB

StringBuilder로 출력을 모아 놓았다가 그 String을 Console.WriteLine하는 방법이 있습니다.

Text

입출력 파일이 예제 포함 2개 이상이기 때문에 Text로는 이 문제를 풀 수 없습니다.

아희

안타깝게도 아희로는 이 문제를 풀 수 없습니다. 입출력하는 방법이 하나뿐인데 시간초과가 납니다.

gghso   9달 전

백준 입문자들을 위한 좋은 설명 문제 감사합니다!

이 문제를 먼저 풀었다면 한창 검색하고 돌아다닐 시간을 아낄 수 있었겠네요

dbtmd1007gh   9달 전

감사합니다. 혹시 블로그 링크는 어디 있나요?

jh05013   9달 전

문제 설명에 주어져 있습니다.

https://www.acmicpc.net/blog/v...

댓글을 작성하려면 로그인해야 합니다.