[프로그래머스](python) 나누어 떨어지는 숫자 배열

berry ·2021년 4월 26일
0

Algorithm

목록 보기
5/77


내 풀이

풀이 1.

def solution(arr, divisor):
    answer = []

    for i in arr:
        if arr[i-1] % divisor == 0:
            answer.append(arr[i-1])
        if all(arr[i-1]) % divisor != 0:
            answer.append(-1)
            break
        return answer.sort()
        

실행하지 못했다.

+++
공부하고 안 실행하지 못 한
이유 1) arr을 이미 i로 분절했는데 굳이 arr[i-1]로?
이유 2) if문을 쓰지 않고, for문 밖으로 나와서 단순히 answer에 element가 없으면 -1 반환하는 것이 쉽다.

풀이 2.

 def solution(arr, divisor):
    answer = []

    for i in arr:
        if i % divisor == 0:
            answer.append(i)

        if len(answer) == 0:
            answer.append(-1)

        return answer.sort()
        

+++
1) for문 안에서 간단히 i 사용
2) answer의 길이가 단순히 0이라고 반환하여(element 없음)
3) return answer.sort() 하면 2문제가 틀림 왤까


Python sorted와 list.sort() 차이

list.sort() : list를 단순히 재배열, 그러나 list만 가능
sorted() : sorted 된 객체를 새로 만듦(모두 사용 가능)

내 풀이 2. 에서 return answer.sort()는
답이 -1이 될 수도 있기 때문에 안되는 걸까?


다른 풀이

def solution(arr, divisor): return sorted([n for n in arr if n%divisor == 0]) or [-1]

+++
1. or 부분이 감명깊다
2. n을 이렇게 쓸 수 있구나
3. 내 코드 진짜 구구절절이다

profile
Engineer

0개의 댓글