인프런 커뮤니티 질문&답변

jhshin0028님의 프로필 이미지
jhshin0028

작성한 질문수

파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)

dict의 key를 tuple로 두었을때 tuple에 접근하는 과정에서의 에러

작성

·

293

0

카드 역배치 문제를 해싱을이용해 풀고자 하였고, 이상한 에러가 나는데 아무리 구글링을 하여도 해결할 수 없어서 질문드립니다 ㅠㅠ

TypeError: 'int' object is not subscriptable <- 이렇게 뜨는데, x 를 출력시켰더니 (5,10), x[1] 을 출력시키니 10이 잘만 출력 됩니다 ㅠㅠ 

답변주신다면 정말 감사드리겠습니다 ㅠㅠㅠ

s,e = map(int,input().split())
    for x in dict.keys():
        print(x)
        if x==(s,e): 
            if dict.get(x,0)==0:
                break
            else:
               #어쩌구
        else: 
            if s<=x[1]: ####에러나는 부분
                dict[(s,e)] = 0
                #저쩌구
    else: 
        dict[(s,e)] = 1

답변 5

0

jhshin0028님의 프로필 이미지
jhshin0028
질문자

넵,,답변 갑사합니다..!

0

김태원님의 프로필 이미지
김태원
지식공유자

에러가 없이 잘 실행됩니다. 단지 답이 틀릴뿐입니다.

0

jhshin0028님의 프로필 이미지
jhshin0028
질문자

넵 죄송합니다 ㅠㅠ

올렸습니다!

0

jhshin0028님의 프로필 이미지
jhshin0028
질문자

def makeReverse(arr,s,e):
    arr2 = arr[s-1:e]
    return reversed(arr2)

arr = []
for i in range(20):
    arr.append(i+1)
dict = {}

for _ in range(10):
    s,e = map(int,input().split())
    for x in dict.keys():
        if x==(s,e): 
            if dict.get(x,0)==0:
                break
            else:
                dict[x]+=1
                break
        else: 
            if s<=x[1]:
                dict[(s,e)] = 0
                dict[x] = 0
                break
    else: 
        dict[(s,e)] = 1

for x in dict:
    if dict[x]%2:
        arr[x[0]-1:x[1]] = makeReverse(arr,x[0],x[1])
print(arr)

0

김태원님의 프로필 이미지
김태원
지식공유자

실제 제가 돌려봐야하니 이 문제를 푼 에러나는 본인 코드 전체를 정확하게 올려주세요. 

일단 위 코드는 딕셔너리 선언부도 없고, 딕셔너리에 값을 넣지도 않았는데 탐색하고 있는 이상한 코드입니다. 카드역배치를 정확하게 푼 코드를 올려주세요.

jhshin0028님의 프로필 이미지
jhshin0028

작성한 질문수

질문하기