자연수 N을 입력받아 1부터 N까지 한 줄에 하나씩 출력하는 프로그램을 작성
자연수 n을 입력받아 1부터 n까지 한 줄씩 출력하는 것이다. 이는 for문 내의 i를 하나씩 출력하면 된다.
평소대로 for(i = 0; i < n; i++)
으로 했다간 틀릴 수 있다. 문제에서는 1부터 나와야 하고, n까지 다 나와야 하므로, for(i = 1; i <= n; i++)
으로 적어야 한다. (항상 문제를 잘 읽는 것이 중요하다.)
endl;
을 사용하는 경우 시간초과가 뜬다!! 웬만하면 \n
을 쓸 것. (이전 문제 15552번에도 설명이 나와있다)#include <iostream>
using namespace std;
int main()
{
int n, i;
cin >> n;
for (i = 1; i <= n; i++) {
cout << i << "\n";
}
return 0;
}
결과 : 성공!
어제 배웠던 cin.tie(NULL);
와 ios_base::sync_with_stdio(false);
를 활용해서 재작성해보았다.
cin.tie(NULL);
ios_base::sync_with_stdio(false);
#include <iostream>
using namespace std;
int main()
{
cin.tie(NULL);
ios_base::sync_with_stdio(false);
int t, i, a, b;
cin >> t;
for (i = 0; i < t; i++) {
cin >> a >> b;
cout << a + b << "\n";
}
return 0;
}
결과 : 성공!
1번째와 다른 점이 있다면 시간이 4ms 더 줄었다!
1번째 시도 : 12ms
2번째 시도 : 8ms
단순히 알고리즘 문제니까 상관없어서 아무생각없이 cin.tie(NULL);
와 ios_base::sync_with_stdio(false);
를 모두 썼다. 그런데 찾아보니까 굳이 cin.tie(NULL) 을 쓸 필요가 없었다... (오늘도 Stranger's LAB 을 참고했다!)
tie()
: 입력과 출력의 연결을 끊어주는 것
#include <iostream>
using namespace std;
int main()
{
ios_base::sync_with_stdio(false);
int t, i, a, b;
cin >> t;
for (i = 0; i < t; i++) {
cin >> a >> b;
cout << a + b << "\n";
}
return 0;
}
cin.tie(NULL);
와 ios_base::sync_with_stdio(false);
를 어제 배웠는데 다음문제에서 활용하고 성능 차이를 보니까 어제 한 게 헛된 게 아닌 느낌이 들었다.
그래도 제대로 알고 써야겠다고 반성했다! 문제 다 풀고 넘어갔으면 모를뻔했다. 혹시나 하고 찾아본 나 자신 잘했어!