알고리즘/programmers[1]

[프로그래머스] 나누어 떨어지는 숫자 배열: python3

fladi 2022. 1. 23. 20:33
728x90
def solution(arr, divisor):
    a = [i  for i in arr  if i%divisor == 0]
    
    # a가 빈 리스트가 아니면 sorted(a)반환/ else [-1]
    return sorted(a) if a else [-1]

<내 풀이 분석>

1. arr배열 요소 중 divisor로 나누어 떨어지는 값만 a배열에 저장함

2. a배열이 빈 리스트가 아니라면 sorted(a) (=오름차순으로 정렬된 a배열) 을 반환

                 빈 리스트라면 [-1]을 반환한다.

 

 

 

 

+) or을 이용한 풀이

def solution(arr, divisor): 
    
    # or: 앞에 것이 거짓이라면 뒤에 것 반환
    return sorted([n for n in arr if n%divisor == 0]) or [-1]

프로그래머스에서 좋아요를 가장 많이 받은 풀이이다. 풀이방식은 앞에 것과 비슷함.

or: 앞에 내용이 거짓(빈리스트)이라면 뒤에 것 [-1]을 반환

 

def solution(arr, divisor): 
    a = list(filter(lambda x: x%divisor==0, arr))
    
    return sorted(a) or [-1]

필터 함수를 사용해볼 수도 있다.  

 

 

or 기억해둬야지.

 

728x90