제가 계속 했었을 때 시간초과가 떴었습니다. 그래서 시간초과가 왜 떴을까? 라는 고민을 하면서 구글링을 해봤는데요

밑에 보시면 답이 나와있습니다.

 

문제

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

입력

첫째 줄에 100,000보다 작거나 같은 자연수 N이 주어진다.

출력

첫째 줄부터 N번째 줄 까지 차례대로 출력한다.

 

 

 

만약 소스를 다 적고 5,4,3,2,1까지 출력이 됐는데 [시간초과]라고 뜨시는 분들은 다음과 같습니다.

첫 번째로 반복문(for, while)등을 사용해서 시간이 오래 걸린다는 점이 있습니다.

두 번째로 입출력 방식에서 여러 개를 받거나 출력할 때 시간초가가 날 수도 있습니다.

세 번째로 [endl]라는 함수를 썼기 때문입니다. 그래서 [\n]로 바꿔줘야 합니다.

 

즉, 이 문제에서 문제점은 [endl]를 쓰는 것이 아니라 ["\n"]을 써야 됩니다.

 

입출력 상황이나 반복적이 많으면(cin/cout)을 사용하시면 cin.tie(NULL), cout.tie(NULL), sync_with_stdio(false)를 적용해주시길 바랍니다.

(제 그 전글을 보시면 입출력이 많은 상황에서 java는 무엇을 써야되고 C++에서는 무엇을 써야되는지 글을 기재해놨습니다.)

 

소스코드 보시겠습니다.

#include <iostream>

using namespace std;

int main()
{
    
    int a;
    cin >> a;

    for(int i=a; i>0; i--)
        cout<<i<<"\n";

}

 

 

이상 포스터를 마치겠습니다. 감사합니다.

+ Recent posts