Problem Solving/Know-how

알고리즘 문제를 풀 때 가장 좋은 입출력 방법은? (C, C++, Java )

TakeKnowledge 2019. 9. 4. 17:06
반응형

- C

 

입력 : scanf

출력 : printf

 

- C++

 

입력 : scanf 

        (단 ios_base::sync_with_stdio(false); 와 cin.tie(NULL) 을 사용하면 cin 이 빠르다.

        하지만 이럴 경우 stdio의 함수들은 사용할 수 없다)

출력 : printf

        (단 ios_base::sync_with_stdio(false); 를 사용하고 줄바꿈을 '\n'으로 처리하면 cout이 더 빠르다 

         물론 이 때도 stdio 함수들은 사용할 수 없다 )

 

- Java

 

입력 : BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

         String s = br.readLine(); 

출력 : BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
         String s = "abcdefg";//출력할 문자열
         bw.write(s+"\n");//출력
         bw.flush();//남아있는 데이터를 모두 출력시킴
         bw.close();//스트림을 닫음

 

참조 : 

 

입력 속도 비교

여러가지 언어와 입력 방법을 이용해서 시간이 얼마나 걸리는지 비교해 보았습니다. 방법: 첫째 줄에 정수의 개수 N (= 10,000,000), 둘째 줄부터 N개의 줄에 한 개의 자연수(10,000 이하)가 적힌 파일을 입력받는데 걸리는 시간을 측정. 10번 측정해서 평균값으로 순위를 매김 순위 언어 입력 방법 평균 (초) 1 C11 mmap 0.043 2 C11 fread 0.0799 3 C11 getchar 0.3496 4 C++17 ios_base::

www.acmicpc.net

 

출력 속도 비교

여러가지 언어와 출력 방법을 이용해서 시간이 얼마나 걸리는지 비교해 보았습니다. 방법: 총 N개의 줄에 1부터 10,000,000까지의 자연수를 한 줄에 하나씩 출력하는 시간을 측정. 10번 측정해서 평균값으로 순위를 매김 순위 언어 출력 방법 평균 (초) 1 C11 fwrite 0.4423 2 C++17 ios_base::sync_with_stdio(false); cout << i << '\n'; 0.827 3 C++17 ios_base::sync_wi

www.acmicpc.net

 

[Java] BufferedReader, BufferedWriter를 활용한 빠른 입출력

BufferedReader/BufferedWriter는 Buffer에 있는 IO 클래스입니다. 입력된 데이터가 바로 전달되지 않고 중간에 버퍼링이 된 후에 전달되됩니다. 출력도 마찬가지로 버퍼를 거쳐서 간접적으로 출력장치로 전달되기..

coding-factory.tistory.com

 

반응형