jh05013   2년 전

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

C

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

C++

  • 아래 얘기는 cin, cout을 쓸 때의 얘기지, scanf/prinf로 입출력을 하고자 하신다면 그냥 쓰시면 됩니다. scanf/printf는 충분히 빠릅니다.
  • 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을 맨 처음에 함으로써 쓰는 편입니다.

Kotlin

Java처럼 BufferedReader와 BufferedWriter를 쓰면 됩니다.

Ruby

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

Go

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

C#

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

VB

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

Rust

아래 "rust05013"으로 올린 댓글을 참조해 주시기 바랍니다.

Swift

fread로 여러 바이트를 한번에 읽고, 정수를 읽어야 할 때마다 미리 읽어둔 문자열로부터 정수를 파싱하면 됩니다. 꽤 복잡한 방법이지만, 이것보다 간단한 방법은 아직 찾지 못했습니다.

Text

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

아희

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

gghso   2년 전

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

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

dbtmd1007gh   2년 전

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

jh05013   2년 전

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

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

rust05013   8달 전

Rust:

zayne   7달 전

혹시 코틀린의 경우 Native로는 어떻게 해야 하는지 알 수 있을까요?

marco2520332   6달 전

Node.js의 경우 매 번 console.log로 출력하면 시간초과를 받고, 하나의 문자열에 결과값과 개행문자를 저장해서 마지막에 출력했을 때 1496ms 받아서 통과했습니다.

stainblue   1달 전

Go : bufio 예시 올려드립니다.

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