1. 문제 목적
이 문제는 리스트의 인덱싱과 요소 교환을 통해 파이썬에서의 기본적인 데이터 조작 방법을 학습하는 데 중점을 둡니다. 이를 통해 사용자는 데이터 구조에 저장된 요소에 접근, 수정하는 기본적인 방법을 익히게 됩니다.
2. 핵심 개념
- 리스트 인덱싱: 리스트에서 특정 위치의 요소에 접근하는 방법. 리스트[인덱스]의 형태로 사용됩니다. 파이썬의 인덱스는 0부터 시작합니다.
- 요소 교환: 파이썬에서 두 변수의 값을 교환하는 가장 간단한 방법은 a, b = b, a의 형태로 사용하는 것입니다. 이 문제에서는 이 방법을 사용하여 두 바구니의 공을 교환합니다.
3. 문제 해결 절차
- 초기 설정: N개의 바구니를 준비하고 각 바구니에 1부터 N까지 순서대로 번호를 부여합니다.
- 교환 명령 실행: 주어진 교환 명령에 따라 지정된 두 바구니의 공을 교환합니다.
- 결과 출력: 모든 교환 작업을 마친 후 각 바구니에 들어있는 공의 번호를 출력합니다.
4. 코드 작성
최적화된 코드
N, M = map(int, input().split()) # N: 바구니의 수, M: 교환 횟수
baskets = list(range(1, N+1)) # 바구니 초기화
for _ in range(M):
i, j = map(int, input().split()) # 교환할 바구니 번호 입력
baskets[i-1], baskets[j-1] = baskets[j-1], baskets[i-1] # 바구니의 공 교환
print(*baskets) # 결과 출력
학습을 위한 쉬운 코드
N, M = map(int, input().split()) # N: 바구니의 수, M: 교환 횟수
baskets = [i for i in range(1, N+1)] # 바구니 초기화
for _ in range(M):
i, j = map(int, input().split()) # 교환할 바구니 번호 입력
temp = baskets[i-1] # 첫 번째 바구니의 공 임시 저장
baskets[i-1] = baskets[j-1] # 두 번째 바구니의 공을 첫 번째 바구니로 이동
baskets[j-1] = temp # 임시 저장해둔 공을 두 번째 바구니로 이동
for basket in baskets: # 결과 출력
print(basket, end=' ')
5. 코드 분석
최적화된 코드 분석
- N, M = map(int, input().split()): 사용자로부터 바구니의 수와 교환 횟수를 입력받습니다.
- baskets = list(range(1, N+1)): 1부터 N까지의 번호를 가진 바구니를 리스트로 생성합니다.
- i, j = map(int, input().split()): 교환할 두 바구니의 번호를 입력받습니다.
- baskets[i-1], baskets[j-1] = baskets[j-1], baskets[i-1]: 파이썬의 다중 할당을 활용하여 두 바구니의 공을 교환합니다.
- print(*baskets): 최종적으로 각 바구니에 들어있는 공의 번호를 출력합니다.
학습을 위한 쉬운 코드 분석
- 이 코드는 최적화된 코드와 비슷한 로직을 따르지만, 공을 교환하기 위해 임시 변수 temp를 사용합니다.
- temp = baskets[i-1]: 첫 번째 바구니의 공을 임시 변수에 저장합니다.
- baskets[i-1] = baskets[j-1]: 두 번째 바구니의 공을 첫 번째 바구니에 넣습니다.
- baskets[j-1] = temp: 임시 변수에 저장된 첫 번째 바구니의 공을 두 번째 바구니에 넣습니다.
6. 마무리
리스트의 인덱스의 값을 변경하는 방법을 알게 되었다.
'알고리즘, 자료구조' 카테고리의 다른 글
[백준| 단계별로 풀어보기 4단계 1차원 배열 | Python] 10811번 바구니 뒤집기 (0) | 2024.04.05 |
---|---|
[백준| 단계별로 풀어보기 4단계 1차원 배열 | Python] 3052번 나머지 (0) | 2024.04.05 |
[백준| 단계별로 풀어보기 4단계 1차원 배열 | Python] 10870번 공 넣기 (0) | 2024.04.04 |
[백준| 단계별로 풀어보기 4단계 1차원 배열 | Python] 2562번 최댓값 (0) | 2024.04.04 |
[백준| 단계별로 풀어보기 3단계 반복문 | Python] 10951번 A + B 예외처리 (0) | 2024.04.03 |