본문 바로가기

알고리즘/Python 기초

파이썬 - 나누어 떨어지는 숫자 배열(lv.1)

문제 ) 프로그래머스 - 나누어 떨어지는 숫자 배열(lv.1)

📌 문제 설명

array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요.

divisor 나누어 떨어지는 element 하나도 없다면 배열에 -1 담아 반환하세요.

 

📌 제한 사항

  • arr은 자연수를 담은 배열입니다.
  • 정수 i, j에 대해 i ≠ j 이면 arr[i] ≠ arr[j] 입니다.
  • divisor는 자연수입니다.
  • array 길이 1 이상인 배열입니다.

📌 입출력 예

arr divisor return
[5,9,7,10] 5 [5,10]
[2,36,1,3] 1 [1,2,3,36]
[3,2,6] 10 [-1]

✏️ sorted( for문, if 조건문 )

-   일전에 sorted 사용하면 list로 자동 반환되는 점을 고려해서 [] 안에 넣지 않음. (통과는 됐는데 맞는 문법인지 확신이 안 선다..)

✏️ 배열의 길이가 0일 경우 -1 반환

def solution(arr, divisor):

    answer = sorted(i for i in arr if i % divisor == 0)
    if len(answer) == 0: answer = [-1]
    return answer

 

✏️ 표현식1 or 표현식2

-   or 앞, 뒤 표현식 둘 다 True일 경우 표현식1 값만 나옴.(맞으면 앞에서 끊김)

def solution(arr, divisor):

	# return 표현식1 or 표현식2
    return sorted(i for i in arr if i % divisor == 0) or [-1]