1092 : [기초-리스트] 이상한 출석 번호 부르기2
•시간제한: 1.000 S
•메모리제한: 128 MB
•제출: 360
•통과: 146
•만든사람: suakii
문제 설명
본 문제는 python 의 빠른 기초 학습을 위해 설계된 문제로서 python 코드 제출을 기준으로 설명되어 있습니다.
------
정보 선생님은 수업을 시작하기 전에 이상한 출석을 부른다.
선생님은 출석부를 보고 번호를 부르는데,
친구들의 얼굴과 이름을 빨리 외우기 위해 번호를 랜덤으로 아무렇게나 부른다.
그리고 이름이 잘 기억되지 않는 친구들은 번호를 여러 번 더 부르기도 한다.
영일이는 선생님이 부른 번호들을 기억하고 있다가 거꾸로 불러보고 싶어졌다.
아무렇게나 부른 n번의 출석 번호가 주어질 때, 부른 번호를 거꾸로 출력해 보자.
→ 출력:
------
정보 선생님은 수업을 시작하기 전에 이상한 출석을 부른다.
선생님은 출석부를 보고 번호를 부르는데,
친구들의 얼굴과 이름을 빨리 외우기 위해 번호를 랜덤으로 아무렇게나 부른다.
그리고 이름이 잘 기억되지 않는 친구들은 번호를 여러 번 더 부르기도 한다.
영일이는 선생님이 부른 번호들을 기억하고 있다가 거꾸로 불러보고 싶어졌다.
아무렇게나 부른 n번의 출석 번호가 주어질 때, 부른 번호를 거꾸로 출력해 보자.
풀이 방법 1: for 반복문으로 거꾸로 출력하기
리스트에 번호를 저장해 두고, 인덱스를 뒤에서부터 앞으로 거슬러 올라가며 하나씩 출력합니다.
핵심: range(시작, 끝, 증감)
range(n) → 0, 1, 2, ..., n-1 (앞에서 뒤로)
range(n-1, -1, -1) → n-1, n-2, ..., 1, 0 (뒤에서 앞으로)
예) n=5 일 때 range(4, -1, -1) 은 4, 3, 2, 1, 0 순서로 i가 변합니다.
n = int(input())
a = list(map(int, input().split()))
# range(n-1, -1, -1) : n-1부터 시작해서 0까지, 1씩 감소
for i in range(n-1, -1, -1):
print(a[i], end=' ')
예시 입력이 10 4 2 3 6 6 7 9 8 5 라면:
| i 값 | a[i] |
|---|---|
| 9 | 5 |
| 8 | 8 |
| 7 | 9 |
| ... | ... |
| 0 | 10 |
5 8 9 7 6 6 3 2 4 10
풀이 방법 2: [::-1] 슬라이싱으로 한 번에 뒤집기
리스트를 통째로 뒤집어서 새 리스트를 만든 뒤 출력하는 방법입니다.
a[::-1] 은 리스트 a 전체를 거꾸로 뒤집은 새 리스트를 만들어줍니다.
n = int(input())
a = list(map(int, input().split()))
# a[::-1] : a 리스트를 거꾸로 뒤집은 새 리스트
reversed_a = a[::-1]
for i in range(n):
print(reversed_a[i], end=' ')
[::-1] 동작 원리:
[시작 : 끝 : 간격] 에서 간격이 -1 이면 오른쪽에서 왼쪽으로 한 칸씩 이동합니다.
시작과 끝을 생략하면 자동으로 "맨 끝 → 맨 앞" 전체 범위가 됩니다.
a = [10, 4, 2, 3, 6, 6, 7, 9, 8, 5]
# [0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
#
# a[::-1] → 인덱스 9부터 0까지 역순으로 수집
# → [5, 8, 9, 7, 6, 6, 3, 2, 4, 10]
print(a[::-1]) # [5, 8, 9, 7, 6, 6, 3, 2, 4, 10]
[f-string 출력 참고]
for i in range(n-1, -1, -1):
print(f"{a[i]}", end=' ')
입력 설명
첫 번째 줄에 번호를 부른 횟수($n$)가 입력된다.
두 번째 줄에는 $n$개의 번호($k$)가 스페이스로 분리되어 한 줄로 입력된다.
($1 \le n \le 10000$, $1 \le k \le 23$)
두 번째 줄에는 $n$개의 번호($k$)가 스페이스로 분리되어 한 줄로 입력된다.
($1 \le n \le 10000$, $1 \le k \le 23$)
출력 설명
스페이스로 분리해서 거꾸로 출력한다.
입력 예시
COPY
복사되었습니다!
복사되었습니다!
10
10 4 2 3 6 6 7 9 8 5
출력 예시
COPY
복사되었습니다!
복사되었습니다!
5 8 9 7 6 6 3 2 4 10
도움
기초100제(py) v0.85 : 정보교사 커뮤니티 @컴퓨터과학사랑(CSL)
- 중고등학교 정보 선생님들과 함께 정보수업/방과후/동아리활동 등을 통해 재미있게 배워보세요.
- 모든 내용 및 이미지들은 저작자와의 협의 없이 무단으로 사용할 수 없습니다.
[원작자: 전현석, 최문성(확인), 이준용(확인), 김지혜(그림) (2020)]
- 중고등학교 정보 선생님들과 함께 정보수업/방과후/동아리활동 등을 통해 재미있게 배워보세요.
- 모든 내용 및 이미지들은 저작자와의 협의 없이 무단으로 사용할 수 없습니다.
[원작자: 전현석, 최문성(확인), 이준용(확인), 김지혜(그림) (2020)]