Algorithm/Prob
프로그래머스) 42748
헬린인형
2021. 9. 2. 02:10
* 저는 알고리즘 엄청ㅇㅇ 초보라서 참고하기엔 그닥 공부는 안될 소스일거에요! 틀린 것도 많을거고.
def solution(array, commands):
answer = []
i = k = j = 0
for a in range(len(commands)): # 행의 크기만큼
i = commands[a][0]
j = commands[a][1]
k = commands[a][2]
arr2 = []
arr2 = sorted(array[i-1:j])
tmp = arr2[k-1] # 문제구간
# arr = array[i-1:j].sorted()
# tmp = arr[k-1]
answer.append(tmp)
return answer
처음에 저 주석처리된 저런 식으로 코드를 짰었다.
그랬더니 TypeError: 'NoneType' object is not subscriptable 이런 에러가 떴다.
sorted()를 잘못썼다. ㅇ...
추가적으로 저 에러에 대해서 공부했는데,
대부분 "변수에 return 값을 받고, 그 변수가 list 또는 넘파이어레이, dictionary일 것이라고 가정하고, 그 변수의 원소를 [ ] 로 접근(인덱스 값으로 접근) 하려 하는 상황" 에 많이 나타나는 에러라고 한다.
그리고 함수에서도 return할 게 없는 경우, 파이썬은 None을 return하는데 그 경우 저 에러가 뜬다고 함.
확인차 디버깅해봤다.
arr = array[i-1:j].sort()에서 당연히 에러가 떴음
sort()는 원본 리스트에 영향을 주면서 반환값이 없기 때문에 NoneType이 들어온다.
뭐 어쨌든 이런 저런 과정을 거쳐서 맞췄고
다른 사람 풀이 보니까 너무 충격적이었음
def solution(array, commands):
return list(map(lambda x:sorted(array[x[0]-1:x[1]])[x[2]-1], commands))
(간-단)
.....잘하고 싶다..
+
파이썬을 공부해본 적은 없고 알고리즘 풀 때 편하다길래 하는데,
풀 때마다 파이썬 언어를 잘 몰라서 만나는 에러들을 자꾸 본다.
이 정도면 파이썬 유튜브를 보던 책을 사던 제대로 좀 공부해야겠다^^-
그게 싫으면 c++해야지 뭐...
열심히 하장
*Ref
반응형