TODAY TIL
안녕하세요! 오늘은 n개의 숫자가 적힌 카드를 이용해 특정 규칙에 따라 카드를 처리하는 Python 코드에 대해 설명해드리겠습니다. 이 코드는 카드 게임의 시뮬레이션으로, 주어진 카드가 한 장 남을 때까지의 과정을 출력합니다.
문제 설명
사용자는 n개의 카드(숫자 1부터 n까지)를 갖고 있으며, 다음의 규칙을 반복해서 카드가 한 장 남을 때까지 진행합니다:
- 제일 위에 있는 카드를 버립니다.
- 그다음 제일 위에 있는 카드를 제일 아래로 옮깁니다.
코드 설명
n = int(input())
card = [i for i in range(1, n + 1)]
discard = []
while len(card) != 1:
discard.append(card.pop(0)) # 제일 위에 있는 카드를 버린다.
card.append(card.pop(0)) # 제일 위에 있는 카드를 제일 아래로 옮긴다.
for c in discard:
print(c, end=' ')
print(card[0])
코드 단계별 분석
- 입력받기: n은 카드의 개수를 나타내며, 사용자가 입력합니다.
- 카드 리스트 생성: card는 1부터 n까지의 숫자가 순서대로 저장된 리스트입니다. 예를 들어, n=7일 경우 card = [1, 2, 3, 4, 5, 6, 7]입니다.
- 버려진 카드 리스트 초기화: discard는 게임 중 버려진 카드를 저장하기 위한 빈 리스트입니다.
- 메인 로직:
- while len(card) != 1: 조건을 만족할 때까지 반복합니다.
- discard.append(card.pop(0)): 카드의 맨 위에 있는 카드를 discard에 추가합니다.
- card.append(card.pop(0)): 카드의 맨 위에 있는 카드를 제거하고, 이를 카드 리스트의 맨 아래로 보냅니다.
- 출력:
- discard 리스트의 내용을 순서대로 출력합니다.
- 마지막으로 남은 한 장의 카드를 출력합니다.
동작 예시
입력: n = 7
초기 상태:
- card = [1, 2, 3, 4, 5, 6, 7]
- discard = []
게임 과정:
- discard = [1], card = [3, 4, 5, 6, 7, 2]
- discard = [1, 3], card = [5, 6, 7, 2, 4]
- discard = [1, 3, 5], card = [7, 2, 4, 6]
- discard = [1, 3, 5, 7], card = [4, 6, 2]
- discard = [1, 3, 5, 7, 4], card = [2, 6]
- discard = [1, 3, 5, 7, 4, 2], card = [6]
출력:
1 3 5 7 4 2
6
결과 해석: 버려진 카드의 순서를 출력한 후, 마지막으로 남은 카드를 출력합니다.
이 코드의 핵심은 리스트의 pop(0) 메서드와 append() 메서드를 사용하여 카드의 순서를 처리하는 것입니다. 이를 통해 카드 게임의 규칙을 간단하게 구현할 수 있습니다.
결론
이 코드 예제는 Python의 리스트 메서드를 활용하여 간단한 카드 게임을 시뮬레이션하는 방법을 잘 보여줍니다. 다양한 카드 처리 문제에 응용할 수 있는 좋은 연습이 될 것입니다.
다음에도 재미있는 코드 설명으로 찾아오겠습니다. 읽어주셔서 감사합니다!
'python' 카테고리의 다른 글
99클럽 코테 스터디_4기 18일차 TIL (7) | 2024.11.15 |
---|---|
99클럽 코테 스터디_4기 17일차 TIL (7) | 2024.11.14 |
99클럽 코테 스터디_4기 15일차 TIL (1) | 2024.11.12 |
99클럽 코테 스터디_4기 14일차 TIL (0) | 2024.11.11 |
99클럽 코테 스터디_4기 13일차 TIL (1) | 2024.11.10 |