호기심 많은 분석가

[백준 2164] 카드 2 (Python) 본문

Coding/Coding Test & Algorithm

[백준 2164] 카드 2 (Python)

DA Hun 2021. 6. 4. 10:42
 

2164번: 카드2

N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가

www.acmicpc.net

def show_result(data) :
  if len(data)==1 :
    return data
  else : 
    if len(data)%2==0 :
        data = data[1::2]
    else :
        temp = [data[-1]]
        temp.extend(data[1::2])
        data = temp
    return show_result(data)


n = int(input())
arr = [i+1 for i in range(n)]

answer = show_result(arr)
print(answer[0])
  • 재귀함수를 사용해서 해결했다
    • 두 가지의 경우를 나눠서 규칙을 적용
      • 홀수
        • 123을 예로, 1을 지우고 2를 뒤에 보내므로 32의 형태를 맞춰줘야함
      • 짝수
        • 1234를 예로, 위의 규칙을 적용하면 24가 남음
  • 이 과정을 리스트의 길이가 1이 될 때까지 반복해준다.