백준 알고리즘 2742번
백준 알고리즘 2742번 기찍 N
문제
자연수 N이 주어졌을 때, N부터 1까지 한 줄에 하나씩 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 100,000보다 작거나 같은 자연수 N이 주어진다.
출력
첫째 줄부터 N번째 줄 까지 차례대로 출력한다.
예제
입력 | 출력 |
---|---|
5 | 5 4 3 2 1 |
풀이
n = int(input())
for i in range(n, 0, -1):
print(i)
큰 숫자부터 작은 숫자 순으로 나오는 것을 역반복문이라고 한다. 역반복문에는 두 가지 방법이 잇다. 첫 번째 방법은 기본 반복문처럼 쓰되, 큰 숫자를 먼저 적고 두 번째에 작은 숫자를 그리고 역순으로 반복한다는 의미에서 “-1”을 적으면 된다. 예를 들어서 5부터 1까지 역순으로 표출하고 싶다면 for i in range(5, 0, -1):
이런식으로 표현하면 된다. 기존에는 항상 for i in range(a, b)
라는 두가지만 입력한느 구조로 썼기 때문에 range
안에 숫자를 3개를 쓰는 것이 어색하다. 반복눙느 for i in range(start, stop, step):
이라는 구조를 띄고 있다. step
은 숫자간의 거리를 뜻하기 때문에 역순을 표출할 때는 -1
로 표현하는 것이다. 그리고 stop
은 마지막 숫자를 표현하지 않기 때문에 순차적인 반복문을 작성할 때는 항상 for i in range(1, n+1):
로 표현해 n
까지 표출할 수 있도록 만들었떤 것이다.
두 번째 방법은 reversed()
함수를 사용하는 것이다.
for i in reversed(range(n)):
이렇게 reversed()
함수를 사용해도 역순으로 숫자를 표출하게 된다. 하지만 reversed()
함수를 사용하면 n
부터 표출되지 않고 n-
부터 표출되기 때문에 n
부터 표출하려면 n+
로 적어야 한다.