Taene's
[백준] 브론즈V-N 찍기 C++ 2741번 본문
문제
자연수 N이 주어졌을 때, 1부터 N까지 한 줄에 하나씩 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 100,000보다 작거나 같은 자연수 N이 주어진다.
출력
첫째 줄부터 N번째 줄 까지 차례대로 출력한다.
예제 입력 1 복사
5
예제 출력 1 복사
1
2
3
4
5
처음 소스코드: 시간초과
#include <iostream>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
unsigned int n;
cin >> n;
for (int i = 1; i <= n; i++)
{
cout << i << endl;
}
return 0;
}
최종 소스코드:
#include <iostream>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
unsigned int n;
cin >> n;
for (int i = 1; i <= n; i++)
{
cout << i << "\n";
}
return 0;
}
접근방법: 단순한 입출력 문제이지만, std::endl은 단순히 개행만 하는 것이 아닌 버퍼를 비우는 작업도 같이 하기 때문에 시간초과가 걸리므로, "\n"을 사용해줘야 한다.
알게된 점: 여기서 cin.tie(NULL) 이나 cout.tie(NULL) 을 사용하지 않는 이유는 tie()는 '입력과 출력' 연결을 끊어주는 것으로, cin 입력이 들어오면 자동적으로 출력 버퍼를 비우게 된다. 즉, 입출력이 반복적으로 있을 땐 연결을 끊어주는 것이 맞지만, 이 문제는 처음에만 입력하고 그 뒤엔 출력만 있으므로 cin.tie(NULL);이나 cout.tie(NULLL)을 써준 것과 안 쓴 것은 성능이 같다.
'백준 > 브론즈' 카테고리의 다른 글
[백준] 브론즈V-검증수 C++ 2475번 (0) | 2023.08.22 |
---|---|
[백준] 브론즈V-행렬 덧셈 C++ 2738번 (0) | 2023.08.22 |
[백준] 브론즈V-단어 길이 재기 C++ 2743번 (0) | 2023.08.22 |
[백준] 브론즈V-시험 성적 C++ 9498번 (0) | 2023.08.22 |
[백준] 브론즈V-X보다 작은 수 C++ 10871번 (0) | 2023.08.22 |