티스토리 뷰

알고리즘(C++)/백준 알고리즘

2741번 : N 찍기

개발하는꼬물이 2017. 11. 17. 17:08

1. 문제 요약

   자연수  N이 주어졌을 때, 1부터 N까지 한 줄에 하나씩 출력하는 프로그램을 작성하시오.

   자연수 N은 100,000보다 작거나 같아야 한다.


2. 예제 입력

5


3. 예제 출력

1
2
3
4
5


4. 코드
#include <stdio.h>
int main()
{
	int n;

	scanf("%d", &n);

	if (n > 100000)
		return 0;

	for (int i = 1; i <= n; i++)
	{
		printf("%d\n", i);
	}

	return 0;
}

→ iostream의 cout / endl 을 사용하니 시간초과가 뜨길래 왜 그런가 하고 찾아봤다.


    찾아보니, c++자체가 c와의 호환성을 위해 버퍼의 sync를 맞추는 작업 등을 수행하며 출력하기 때문에

    cin/cout이 scanf/printf 에 비해 현저히 느리다고 하고, 특히 endl까지 붙이는 경우 output buffer을 flush 하기 때문에

    더 많이 느려진다고 한다. 


    결론 : 출력이 많은 경우 cout 대신 printf를 사용해야 함 !



'알고리즘(C++) > 백준 알고리즘' 카테고리의 다른 글

2739번 : 구구단  (0) 2017.11.17
2742번 : 기찍 N  (0) 2017.11.17
2839번 : 설탕 배달  (0) 2017.11.17
2558번 : A + B -2  (0) 2017.11.15
10430번 : 나머지  (0) 2017.11.15
댓글