728x90
✏️ 문제
https://www.acmicpc.net/problem/10810
10810번: 공 넣기
도현이는 바구니를 총 N개 가지고 있고, 각각의 바구니에는 1번부터 N번까지 번호가 매겨져 있다. 또, 1번부터 N번까지 번호가 적혀있는 공을 매우 많이 가지고 있다. 가장 처음 바구니에는 공이
www.acmicpc.net
✏️ 풀이방법
1. 0으로 초기화된 1차원리스트(basket)를 생성해서 인덱스를 활용하여 일정범위까지 숫자를 변경한다.
2. 숫자를 변경하는 과정을 m번 동안 반복한다.
- 리스트는 변형(mutable)가능한 자료형이기 때문에 인덱스를 활용해서 값을 변경할 수 있다.
📌 코드
n ,m = map(int,input().split())
basket = [0 for _ in range(n)]
put = []
for x in range(m):
put.append(list(map(int,input().split())))
i = put[x][0]
j = put[x][1]
for y in range(i,j+1):
basket[y-1] = put[x][2] #인덱스는 -1
print(' '.join([str(_) for _ in basket]))
📌 결과
#입력
5 4
1 2 3
3 4 4
1 4 1
2 2 2
#출력
1 2 1 1 0
🤔 시행착오.1
n ,m = map(int,input().split())
basket = [0 for _ in range(n)]
put = []
for _ in range(m):
put.append(list(map(int,input().split())))
for x in range(m):
i = put[x][0]
j = put[x][1]
ball = put[x][2]
basket[i:j+1] = [ball]
print(basket)
[0, 1, 2]
- basket[i:j+1] = [ball]을 실행하면 basket[i:j+1]는 리스트(basket)의 i부터 j까지 원소를 바꾸는 것이 아니라 리스트(basket)의 i부터 j까지로 슬라이싱을 한 것이다.
🤔 시행착오.2
n ,m = map(int,input().split())
basket = [0 for _ in range(n)]
put = []
for x in range(m):
put.append(list(map(int,input().split())))
i = put[x][0]
j = put[x][1]
for y in range(i,j+1):
basket[y] = put[x][2]
print(' '.join([str(_) for _ in basket]))
0 1 2 1 1
- basket[y] = put[x][2]에서 y값이 인덱스번호로 들어가야하기 때문에 -1을 해줘야한다.
'Python > online judge' 카테고리의 다른 글
백준 [5597.과제 안 내신 분..?] | Python (0) | 2023.12.01 |
---|---|
백준 [10811.바구니뒤집기] | Python (0) | 2023.11.30 |
백준 [5622.다이얼] | Python (0) | 2023.11.29 |
백준 [11718.그대로 출력하기] | Python (0) | 2023.11.27 |
백준 [11720.숫자의 합] | Python (0) | 2023.11.27 |