밑의 링크는 CodeUp에서의 문제 링크입니다.
문제는 링크를 통해서 직접 봐주시길 바랍니다.
생각해 볼 점
1. 숫자를 감소하면서 반복하기
저는 데이터가 저장되어 있는 리스트의 인덱스를
끝에서부터 처음으로 감소하는 반복문을 사용해서 풀었습니다.
이처럼 풀 경우 숫자가 감소하는 반복문을 어떻게 만들 것인지 잘 생각해보세요.
지금에서야는 쉽지만, 저는 코딩을 처음 배울 때 숫자가 증가하는 반복문만 만들다가
막상 감소하는 반복문을 만드려고 하니 살짝 당황한 적이 있었습니다.
2. 리스트를 변경하지 않고 풀기, 리스트 자체를 역순으로 변경해서 풀기
저는 입력한 데이터들을 저장하는 리스트를 변경하지 않고
단순히 반복문을 사용해서 역순으로 출력해줬습니다.
파이썬에서는 리스트를 역순으로 뒤집어주는 리스트의 reverse 메서드와
그리고 파이썬 자체의 내장 함수인 reversed가 있습니다.
위의 두 가지를 사용해 리스트 자체를 역순으로 뒤집어서 이 문제를 풀 수도 있습니다.
직접 한 번 해보시길 바랍니다.
예제 설명
1. 첫 번째 예제
- 입력
5
1 3 5 6 8
- 출력
8 6 5 3 1
- 설명
첫째 줄에 입력한 데이터의 개수 n은 5입니다.
둘째 줄에 공백을 기준으로 n개 입력한 데이터는 1, 3, 5, 6, 8입니다.
따라서 입력한 데이터의 역순인 8, 6, 5, 3, 1을 공백으로 구분해 출력합니다.
생각한 풀이 과정
1. 출력 형식
먼저 입력한 n개의 데이터 전체를 하나씩 리스트에 넣어줍니다.
리스트의 인덱스를 역순으로 반복하며
해당 인덱스에 해당하는 리스트 내부의 데이터를 하나씩 출력합니다.
2. 코드 설명
첫째 줄에 n <= 1,000인 데이터의 개수 n을 입력합니다.
int형으로 변환합니다.
n = int(stdin.readline())
둘째 줄에 공백을 기준으로 n개의 데이터를 입력합니다.
각 데이터들을 리스트 변수 num에 넣어줍니다.
nums = list(stdin.readline().split())
- 반복문 시작
리스트 nums의 인덱스를 역순으로 반복합니다.
즉, 인덱스를 (n - 1)부터 0까지 1씩 감소하는 반복문을 만듭니다.
for idx in range(n - 1, -1, -1):
리스트 nums에서 인덱스가 현재 idx 값인 데이터를 출력합니다.
다음 줄로 내리지 않고 한 칸만 띄어줍니다.
print(nums[idx], end=' ')
- 반복문 끝
제출한 파이썬 코드
# readline을 사용하기 위해 import합니다.
from sys import stdin
# 첫째 줄에 n <= 1,000인 데이터의 개수 n을 입력합니다.
# int형으로 변환합니다.
n = int(stdin.readline())
# 둘째 줄에 공백을 기준으로 n개의 데이터를 입력합니다.
# 각 데이터들을 리스트에 넣어줍니다.
nums = list(stdin.readline().split())
# 리스트 nums의 인덱스를 역순으로 반복합니다.
# 즉, 인덱스를 n - 1부터 0까지 1씩 감소하는 반복문을 만듭니다.
for idx in range(n - 1, -1, -1):
# 리스트 nums에서 인덱스가 현재 idx 값인 데이터를 출력합니다.
# 다음 줄로 내리지 않고 한 칸만 띄어줍니다.
print(nums[idx], end=' ')
제출 결과
※ 궁금한 부분, 이상한 점 및 오타는 댓글에 부탁드립니다.
※ 더 효율적이고 빠른 정답을 환영합니다.
※ 공감 버튼❤과 구독 버튼도 잊지 말고 꾹 눌러주시면 감사하겠습니다~👍👍
댓글