문제는 위와 같다. 입력받은 배열 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]을 반환하게 된다.
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[python] 두 정수 사이의 합(연습문제) (0) | 2020.03.21 |
---|---|
[C++] 같은 숫자는 싫어(연습문제) (0) | 2020.03.20 |
[C++] 같은 숫자는 싫어(연습문제) (0) | 2020.03.18 |
[python] 같은 숫자는 싫어(연습문제) (0) | 2020.03.18 |
[C++] 가운데 글자 가져오기(연습문제) (0) | 2020.02.26 |
댓글