[알고리즘/백준] 2742번 :: 기찍 N (C++)

문제 ✍🏻 :: [2742번] 기찍 N

(초록색 글자 클릭 시 문제로 이동)

자연수 N을 입력받아 N부터 1까지 한 줄에 하나씩 출력하는 프로그램을 작성


알고리즘 (접근방법) 💻

2741번은 자연수 n을 입력받아 1부터 n까지 한 줄씩 출력하는 것이다. 이는 for문 내의 i를 하나씩 출력하면 된다.
반면에 2742번은 n부터 1까지 한 줄씩 출력이다. for문 구문을 수정해야 한다.

🚨주의할 점🚨

평소대로 for(i = 0; i < n; i++) 이 아니라 i=N부터 시작해야 한다. for(i = N; i > 0; i--) 으로 적어야 한다. N부터 시작해서 1까지 1씩 줄어드는 것!

  • 참고
    줄바꿈으로 endl;을 사용하는 경우 시간초과가 뜬다!! 웬만하면 \n을 쓸 것. (이전 문제 15552번에도 설명이 나와있다)

⬇1번째, 2번째 시도는 2741번에 나와있으므로 필요하다면 참고!⬇
[알고리즘/백준] 2741번 :: N 찍기 (C++)


💡코드💡

단순히 알고리즘 문제니까 상관없어서 아무생각없이 cin.tie(NULL);ios_base::sync_with_stdio(false);를 모두 썼다. 그런데 찾아보니까 굳이 cin.tie(NULL) 을 쓸 필요가 없었다... (Stranger's LAB 을 참고했다!)

🧐이유

tie(): 입력과 출력의 연결을 끊어주는 것

  • 입출력이 반복적으로 있을 때는 연결을 끊어주는 게 맞지만, 이 문제는 처음 입력 후, 출력만 있다.
  • 따라서 서로 연결을 끊어주어도 의미❌ 쓸 필요 ❌
  • cin.tie(NULL); 이나 cout.tie(NULL)을 삽입하여 제출하더라도 위 코드와 성능 결과가 같게 나온다고 해서 다시 작성했다.
#include <iostream>
using namespace std;

int main()
{
	ios_base::sync_with_stdio(false);

	int N, i;
	cin >> N ;

	for (i = N ; i > 0; i--) {
		cout << i << "\n";
	}

	return 0;
}

좋은 웹페이지 즐겨찾기