본문 바로가기
파이썬/파이썬 알고리즘

파이썬 백준 2742번 제문 는하력출 지까N 터부1

by Go! Jake 2021. 2. 12.

 

https://www.acmicpc.net/problem/2742

 

2742번: 기찍 N

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

www.acmicpc.net

문제

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

 

문제 풀이

문제 풀이 1 - Range 함수 이용하기

N에서 부터 1까지 어떻게 역순으로 나열할 수 있을 것인지에 대한 문제이다.

Point 1: 반복되는 작업을 하는 내용이므로, for문이 사용될 수 있다.

Point 2: 다만, for문이 사용되면 범위를 어떻게 잡아야 N부터 나열될 수 있을 것인가?

기본적으로 for문 iterator에 자주 쓰이는 range 함수를 사용하기로 하였다.

import sys
N=sys.stdin.readline()
N=int(N)

for i in range(N, 0, -1):
    print(i)

위와 같이 사용자로부터 입력 인자를 받을 수 있도록 sys.stdin.readline()을 사용하였고, 문자열로 전환되기 때문에 int()로 정수 처리를 하였다.

여기서, range(N,0, -1)을 사용하였다. 즉, N부터 1까지 (이 경우 마지막 0까지 도달하지 않고 1까지 도달한다.) -1씩 빠지면서 나열하는 것이다.

이 경우 print(N), print(N-1), ...., print(1)까지 도달하여 원하는 답을 구할 수 있다.

 

문제 풀이 - List 만들고 Reversed 함수 이용하기

공부를 위해 하나의 풀이만 더 해보자.

Reversed 함수가 있다. 이 함수는..

The reversed() function returns the reversed iterator of the given sequence.

즉, iterator의 주어진 순서를 뒤집어 주는 함수이다. reversed 함수에 쓸 수 있는 매개 변수는 tuple, string, list, range 등이 있다.

이번에는 1부터 N을 나열하는 list를 만들고, reversed 함수로 뒤집어 준 다음에 하나하나 나열하면 된다.

 

import sys
N=sys.stdin.readline()
N=int(N)

List_N=[]
for i in range(1,N+1,1):
    List_N.append(i)

for i in reversed(List_N):
    print(i)

for문을 통해 1부터 N까지의 List를 나열 해 봅니다. for i in range(1,N+1,1)로 만들어 주면, i는 1부터 N까지 돌아간다.

List_N.append(i)로 각 i는 List 형식으로 저장된다.

마지막까지 돌게 되면, List_N=[1,2,3,4,5,6,....,N]이 된다.

reversed(List_N)은 결과적으로 [N,.....,6,5,4,3,2,1]이 된다.

이를 print()해주면, 각각 N부터 출력하여 의도하고자 한 결과값을 받을 수 있게 된다.

 

 

댓글