
문제
array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요.
divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -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] |
Python
def solution(arr, divisor):
answer = []
#arr.sort()
for i in arr:
if i % divisor == 0:
answer.append(i)
#answer = [-1]
answer.sort()
return answer
실패한 코드다. 나누어 떨어지는 수가 없을 경우의 코드를 작성하는 방법을 몰랐기 때문이다.
def solution(arr, divisor):
answer = []
#arr.sort()
for i in arr:
if i % divisor == 0:
answer.append(i)
if not answer: return [-1]
answer.sort()
return answer
그래도 곧 방법을 찾고 성공시켰다.
def solution(arr, divisor): return sorted([n for n in arr if n%divisor == 0]) or [-1]
한 줄 코드... 왜 이 생각을 못 했을까 잠시 반성했다.
막혔던 곳
1. 조건문에서 else까지 쓰면 입출력 예#1에서 5가 5를 나누어지지 않는다고 판단해버린다. 이유는 모르겠다.
2. return answer.sort() 코드를 작성했더니 null값이 출력된다. 리스트와 튜플의 차이점때문인가 싶기도 한데 정확한 이유는 모르겠다.