[알각코] 인프런 3-3 카드 역배치

숫자만 추출

문제 정보는 인프런의 파이썬 알고리즘 문제풀이 코딩테스트에 있습니다.

문제풀이

# 내가 도전해본 문제풀이!
l = [1 ~ 20]

for i in range(1, 11):
  ai, bi = input().split()
  # reversed(l(l[ai] ~ l[bi]))
  
# swap하는 법을 활용하기
# a, b = b, a

a = list(range(21))

# 변수가 없는 경우 _
for _ in range(10):
  s, e = map(int, input().split())
  
  # reversed를 할 때, 맨 첫번째 수와 마지막 수를 바꾸고, 두번째수와 마지막 두번째 수를 바꾸는 식으로 진행
  # 그렇게하면 for문을 도는데, s~e 구간을 바꾸면 (e-s)+1 // 2 번 for문을 돌면 reversed되는 충분한 횟수로 돌게 된다.

  for i in range((e-s+1)//2):
    a[s+i], a[e-i] = a[e-i], a[s+i]

# 맨 앞자리인 0 빼기
a.pop(0)
for x in a:
  print(x, end=' ')

무조건 리스트를 거꾸로 만드는 reversed를 활용할 생각만하고 있었는데, swap하는 python 문법으로 간단히 해결가능한 문제였던 것 같다.

어떤 값에서 어떤 값까지 거꾸로 돌게되면 거기에서 첫 번째수와 마지막 수를 비교에서 자리를 바꾼다는 개념을 기억해야할 것 같다. 그렇게해서 몇번 도는지도 규칙까지 기억하면 좋을 듯!