백준 문제풀이
2741번 : N 찍기
하다블
2022. 5. 6. 18:58
반응형
문제는 다음과 같습니다.
https://www.acmicpc.net/problem/2741
2741번: N 찍기
자연수 N이 주어졌을 때, 1부터 N까지 한 줄에 하나씩 출력하는 프로그램을 작성하시오.
www.acmicpc.net
풀이는 다음과 같습니다.
#include <iostream>
using namespace std;
int main() {
int n;
cin>>n;
for(int i{0};i<n;i++)
{
cout<<i+1<<"\n";
}
return 0;
}
언듯보면 간단하지만 이 문제의 핵심은 std::endl 을 사용하면 시간초과가 뜬다는 점입니다.
endl 명령어를 사용한 코드는 다음과 같습니다.
#include <iostream>
using namespace std;
int main() {
int n;
cin>>n;
for(int i{0};i<n;i++)
{
cout<<i+1<<endl;
}
return 0;
}
사람이 보기에는 "\n" 을 endl;로 적었고 두 명령어 모두 줄 바꿈을 한다는 점에서 같을 것이라 생각하지만
다음처럼 시간초과되는 일이 발생합니다.
이는 endl이 출력 버퍼를 비워주는 과정이 포함되어 있어 \n 보다 수행시간이 길기 때문입니다.
for문을 30번 돌릴 때 \n과 endl을 사용하였을 때의 수행시간을 비교하면 다음과 같습니다.
따라서 수행시간에 유의하여 \n을 사용하여야 이번 문제를 맞출 수 있습니다.
반응형