https://www.acmicpc.net/problem/2742
문제
자연수 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부터 출력하여 의도하고자 한 결과값을 받을 수 있게 된다.
'파이썬 > 파이썬 알고리즘' 카테고리의 다른 글
파이썬 백준 13301번 수학 합 (0) | 2021.02.20 |
---|---|
파이썬 백준 8393번 수학 합 (0) | 2021.02.16 |
파이썬 백준 2438번 별 찍기 - 1 (0) | 2021.02.12 |
파이썬 백준 2439번 별 찍기 - 2 (0) | 2021.02.12 |
파이썬 백준 10871번 X보다 작은 수 (0) | 2021.02.12 |
댓글