반응형
Python 코드
n = list(range(21))
for _ in range(10):
s, e = map(int, input().split())
for i in range((e-s+1) // 2):
n[s+i], n[e-i] = n[e-i], n[s+i]
n.pop(0)
for x in n:
print(x, end=' ')
Python 코드 풀이
1. 코드에 대한 전체적인 풀이
해당 문제는 입력 카드 20장 중 같은 규칙으로 카드의 위치를 역순으로 바꾸고 누적 시킨 다음 최종 마지막 카드들의 배치를 구하는 문제이다.
20개의 카드를 리스트로 만들었다. 10개의 구간으로 나눠서 반복, s, e 변수에 각각 구간을 담아서 반복 했다.
첫 번째 구간이 돌았을때 역순으로 바꿔주기 위해 (e-s+1) // 2 만큼 반복하여 스와핑 했다.
ex) 5부터 10의 구간을 역순한다면 3회 반복한다 ※ (5-10+1) // 2 = 3
역순 하기 전 카드 위치
5 | 6 | 7 | 8 | 9 | 10 |
n[5], n[10] = n[10], n[5]
n[6], n[9] = n[9] n[6]
n[7], n[8] = n[8], n[7]
스와핑 후 역순 된 카드 위치
10 | 9 | 8 | 7 | 6 | 5 |
결과값이 리스트 1부터 시작해서 0을 pop 시키고 한줄로 출력 시켰다.
반응형
'BOJ' 카테고리의 다른 글
백준 1436번 - 영화감독 숌 [python] (0) | 2023.03.18 |
---|---|
백준 1874번 - 스택 수열 [python] (0) | 2023.03.18 |
백준 10799번 - 쇠막대기 [python] (0) | 2023.03.17 |
백준 10828번 - 스택 [python] (0) | 2023.03.17 |
백준 1547번 - 공 [python] (0) | 2023.02.13 |