bit가 눈 앞에서 왔다갔다

프로그래머스) 42748 본문

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이 들어온다.

arr에 NoneType이 들어왔다

 

뭐 어쨌든 이런 저런 과정을 거쳐서 맞췄고

다른 사람 풀이 보니까 너무 충격적이었음

def solution(array, commands):
    return list(map(lambda x:sorted(array[x[0]-1:x[1]])[x[2]-1], commands))

(간-단)

.....잘하고 싶다..

 

+

파이썬을 공부해본 적은 없고 알고리즘 풀 때 편하다길래 하는데,

풀 때마다 파이썬 언어를 잘 몰라서 만나는 에러들을 자꾸 본다.

이 정도면 파이썬 유튜브를 보던 책을 사던 제대로 좀 공부해야겠다^^- 

그게 싫으면 c++해야지 뭐...

열심히 하장

 

*Ref

https://daewonyoon.tistory.com/368

https://inma.tistory.com/137

반응형

'Algorithm > Prob' 카테고리의 다른 글

Py) 프로그래머스 49189  (0) 2021.12.31
Py) 프로그래머스 42839  (0) 2021.12.28
프로그래머스) 42586  (0) 2021.09.03
이코테_BFS, DFS) Q19 연산자 끼워 넣기  (2) 2021.08.19
7576 토마토 - 방법1  (0) 2019.11.16
Comments