본문 바로가기
알고리즘/프로그래머스

[python] 같은 숫자는 싫어(연습문제)

by 민-Zero 2020. 3. 20.

문제는 위와 같다. 입력받은 배열 arr의 원소들을 입력받은 divisor로 나누었을 때 나누어 떨어지는 값을 오름차순으로 반환하고 나누어 떨어지는 수가 없다면 [-1]을 반환하면 된다.

예제를 확인해보면 배열이 [5, 9, 7, 10], divisor가 5로 입력받을 경우 5로 나누어 떨어지는 원소는 5, 10이 있다 따라서 해당 원소를 오름차순으로 배열에 넣어 반환하면 [5, 10]이 된다. [3, 2, 6], 10일 경우 10으로 나누었을 때 나누어 떨어지는 수가 없으므로 [-1]을 반환한다.

 

설계 및 구현

구현을 위해 주어진 함수는 간단하게 arr, divisor를 매개변수로 받는 함수이다. 해당 문제는 특별히 구현에 대해 고민할 필요가 없이 arr의 각 원소들을 divisor로 나누어 나머지가 0인지 확인한후 배열에 오름차순으로 넣어주면 된다. 만약 해당 배열의 길이가 0일 경우에는 [-1]을 반환하면 된다.

① arr의 원소를 divisor로 나누어 나머지가 0이라면 answer에 넣기

② answer의 길이가 0이면 [-1]을 반환하고 아니라면 오름차순으로 정렬한 answer를 반환

 

①을 위해 answer에 반복문과 조건문을 리스트 안에서 사용하여 한번에 처리하였다. %연산자를 통해 나머지가 0이라면 answer에 넣는 과정을 진행했다.

②를 수행하기 위해 return수행시 조건문을 통해 수행하도록 하였다. answer의 길이가 0이 아니라면 sorted() 함수를 통해 오름차순으로 정렬된 리스트를 반환하고 아니라면 [-1]이라는 리스트를 반환하였다. 

 

테스트 결과 무리 없이 통과할 수 있었다.

 

※새롭게 배운것

다른 사람의 풀이를 통해 or를 활용하는 방법을 볼 수 있었다.

or의 경우 왼쪽항이 false일 경우 오른쪽항을 반환하는데 만약 arr에 나누어 떨어지는 원소가 없으면 빈 리스트로 false와 같은 뜻을 나타내어 자동적으로 [-1]을 반환하게 된다. 

댓글