BOJ

백준 10804번 - 카드 역배치 [python]

SS_G 2023. 2. 4. 01:10
반응형

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