[프로그래머스] 나누어 떨어지는 숫자 배열 [연습문제] [python] Level1

 

 

문제 설명

array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요.
divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요.

 

입출력 예 설명

 

입출력 예#1

arr의 원소 중 5로 나누어 떨어지는 원소는 5와 10입니다. 따라서 [5, 10]을 리턴합니다.

입출력 예#2
arr의 모든 원소는 1으로 나누어 떨어집니다. 원소를 오름차순으로 정렬해 [1, 2, 3, 36]을 리턴합니다.

입출력 예#3
3, 2, 6은 10으로 나누어 떨어지지 않습니다. 나누어 떨어지는 원소가 없으므로 [-1]을 리턴합니다.

 

설계 및 구현

 

my_solution

def solution(arr, divisor):
    answer = []
    for i in arr:
        if i % divisor == 0:
            answer.append(i)
    if answer:
        return sorted(answer)
    return [-1]

arr의 원소들을 한번씩 돌면서 divisor로 나누어 떨어지는 수를 answer에 쌓는다.

만약 answer에 원소가 있다면 sorted(answer)로 정렬한 후 반환하고

answer이 빈 리스트 라면 [-1]을 반환하여 해결 할 수 있다.

 

1. arr을 돌며 divisor로 나누어 떨어지는 요소를 answer에 쌓는다.

2. 만약 answer에 원소가 하나라도 들어 있다면 answer을 정렬한 후 반환

3. answer이 빈 리스트 라면 [-1]을 반환하여 해결!

 

다른 분의 모범 solution

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

answer이 빈리스트인지 검사 할 때 if문 대신 or연산자를 사용했다.

이걸 한줄로 ~ amazing~

반응형

+ Recent posts