gytkd33   2년 전

안녕하세요. 에디터 문제를 풀면서 궁금한점이 생겨서 질문드립니다.

제가 초기에 작성한 코드는 c++의 cin, cout 보다 빠른 printf,scanf를 사용하여 시간을 최대한 줄이는 코드였습니다.

그렇게 작성한 코드로 문제를 통과하고, 저보다 더빠르게 통과한 통과자들의 코드를 공부하던 중 저랑 비슷한 코드에 cin, cout을 사용한 코드가 시간측면에서 3배이상 빠른것을 보았습니다.


그 코드를 보고 제 코드에서 scanf,print 부분만을 cin,cout으로 바꿔보니 해당 코드와 같은 시간이 나왔습니다.

저는 scanf가 cin 보다 빠른것으로 알고있었는데, 제가 놓친부분이 있는것인지 궁금합니다.

두 코드의 다른 부분은

1. 입력받은 문자열을 (1번 코드) char 배열,  (2번 코드) string  으로 저장

2. (1번 코드) print,scanf 사용 (2번 코드) cin, cout 사용

밖에 없다고 생각하는데, 둘 중 어떤 부분이 시간에 큰 영향을 주는것일까요?

r4pidstart   2년 전

cin, cout이 일반적으로 scanf, printf보다 느린 것은 맞습니다.

그런데, 몇 가지 구문을 추가해서 cin, cout의 속도를 scanf, printf보다 빠르게 할 수 있습니다.

 ios_base::sync_with_stdio(0); 

cin.tie(0); 

cout.tie(0); 

이 세 구문을 질문자님이 확인하셨던 cin, cout을 이용한 소스코드에서 찾으실 수 있으실겁니다.


자세한 설명은 https://jaimemin.tistory.com/1... 를 참고해주세요

https://www.acmicpc.net/blog/v... 입력속도 비교

https://www.acmicpc.net/blog/v... 출력속도 비교

gytkd33   2년 전

답변해주셔서 감사합니다!

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