본문 바로가기

Algorithm/Programmers lv.1

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

https://school.programmers.co.kr/learn/courses/30/lessons/12910

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

리스트에 있는 원소를 하나하나씩 diviosor로 나누어떨어지는지 확인하고, 나누어 떨어진다면 비어있는 리스트인 result에 하나씩 추가하였다. 만약 연산 이후에도 result에 하나의 원소도 없다면, 문제의 요구대로 -1만 삽입해주도록 예외처리를 해주었다.

 

def solution(arr, divisor):
    result = []
    for i in range (len(arr)):
        if arr[i] % divisor == 0:
            result.append(arr[i])

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

    result.sort()
    return result

 

이번엔 다른 사람의 풀이를 참고해보자. 한줄짜리 풀이도 있었지만, 실제 시험장에서 떠올릴 수 있을만한 가치있는 코드를 가져와봤다. 

 

def solution(arr, divisor):
    arr = [x for x in arr if x % divisor == 0];
    arr.sort();
    return arr if len(arr) != 0 else [-1];

 

코드를 해석해보면 arr이라는 리스트에 나머지가 0이 되도록 하는 x값을 원소로 하나하나씩 집어넣은 것이다.

그리고 나서 정렬을 해준 뒤, return문에 예외처리를 포함하였다. 

논리 자체는 같지만, 코드가 훨씬 간결해서 보기 좋다.