시간 제한 | 메모리 제한 | 제출 | 정답 | 맞은 사람 | 정답 비율 |
---|
1 초 | 128 MB | 82362 | 35115 | 30350 | 45.108% |
문제
자연수 N이 주어졌을 때, 1부터 N까지 한 줄에 하나씩 출력하는 프로그램을 작성하시오.
출력
첫째 줄부터 N번째 줄 까지 차례대로 출력한다.
정~말 쉬운 문제이다.
하지만 이것도 코드를 제출하니 "시간 초과" 에러가 났다. 하.. 도대체 뭘까.. 싶어서 알아봤다.
결과적으로 C를 사용하면 상관이 없지만 C++을 사용할 경우에는 오류가 날 수 있더라.
C++의 'cin' 과 'cout' 이 C의 'scanf' 와 'printf' 에 비해서 굉장히 속도가 느리다고 한다.
'#include<iostream>' 이 C++ 환경에서도 C 함수를 쓸 수 있도록 '#include<cstdio>'를 포함시키면서 굉장히 느려진다고 한다.
제일 좋은 방식은 시간 초과가 나는 경우 'cin' 이나 'cout' 대신 'scanf' 와 'printf'를 쓰는 것이지만..
굳이 사용하고 싶다면 소스 코드 위쪽에 요놈들을 적자.
sync_with_stdio(false);
cin.tie(null);
대신 이경우 'cstdio'를 싱크시키지 않기때문에 C에서의 함수는 사용할 수 없다.
위 코드 사용시 주의사항
- 'scanf', 'printf'와 섞어서 사용하지 말 것
- 싱글 쓰레드 환경에서만 사용할 것 (PS용으론 상관없지만, 실무에서는 쓰지 말 것)
그냥 웬만해서 시간초과가 난다면 'printf', 'scanf' 등의 C 표준 입출력 함수들을 사용하자.. ㅠㅠ
실패한 코드
//2741
#include iostream>
using namespace std;
int main() {
int n;
cin >> n;
for (int i = 0; i < n; i++) {
cout << i + 1 << endl;
}
return 0;
}
성공한 코드
//2741
#include ⁢iostream>
using namespace std;
int main() {
int n;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
printf("%d\n", i + 1);
}
return 0;
}