파이썬 에러 : TypeError: 'int' object is not subscriptable

KimGirin·2021년 10월 22일
0

[CodeUp] 6097 : [기초-리스트] 설탕과자 뽑기

부모님과 함께 놀러간 영일이는
설탕과자(설탕을 녹여 물고기 등의 모양을 만든 것) 뽑기를 보게 되었다.

길이가 다른 몇 개의 막대를 바둑판과 같은 격자판에 놓는데,

막대에 있는 설탕과자 이름 아래에 있는 번호를 뽑으면 설탕과자를 가져가는 게임이었다.
(잉어, 붕어, 용 등 여러 가지가 적혀있다.)

격자판의 세로(h), 가로(w), 막대의 개수(n), 각 막대의 길이(l),
막대를 놓는 방향(d:가로는 0, 세로는 1)과
막대를 놓는 막대의 가장 왼쪽 또는 위쪽의 위치(x, y)가 주어질 때,

격자판을 채운 막대의 모양을 출력하는 프로그램을 만들어보자.

[Error Code]

에러 : 볼드체

h, w = input().split() # 격자판의 가로(h)/세로(w)
n = int(input()) # 막대의 개수
h = int(h) # h, w를 정수형으로 바꾼다.
w = int(w)

#구조체 (h X w) 에 0값을 넣어주는 초기값 설정
d = []
for i in range(h):
d.append([])
for j in range(w):
d[i].append(0)

#막대의 제원을 입력받는다(여러번 입력받기 때문에 for 반복문을 사용하였다, 반복횟수는 n)
#i, d, x, y 각각의 받은 값을 통해서 구조체에 덮어 씌워 표기
for i in range(n):
l, d, x, y = input().split() # 막대의 길이(l), 방향(d, d=0이면 가로, d=1이면 세로), 좌표(x,y)
l = int(l)
d = int(d)
x = int(x)
y = int(y)

if d == 0 :
for i in range(x, l+1):
d[int(i)][int(y)] = 1
elif d == 1:
for i in range(y, l+1):
d[int(x)][int(i)] = 1

for i in range(h):
for j in range(w):
print(d[i][j], end= '')
print()

[WHY??]

TypeError: 'int' object is not subscriptable는 인덱스를 갖지않는 값에 인덱스를 가지게 코드를 짤 경우 발생하는 오류이다.

[HOW??]

구조체 d와 이후 d값을 동일하게 사용했기 때문에 구조체를 호출하면서 오류가 발생하였다.
처음 구조체를 선언했던 d를 candy로 변경해주었더니 정상적으로 돌아간다.
d = [] >> candy = []
d[int(i)][int(y)] = 1 >> candy[int(i)][int(y)] = 1
간단한 실수였으며, 앞으로는 이러한 실수를 줄이도록 해야겠다.

profile
지식을 하나씩 쌓아서 큰 탑을 만들고싶다.

0개의 댓글