간단히 말해 arr에 있는 element들을 divisor로 나누었을때, 나누어 떨어지는 숫자가 있다면 이를 오름차순으로 배열하라. 만약 나누어 떨어지는 숫자가 하나도 없다면 [-1]을 return하라. 따라서 다음과 같이 풀었다:
def solution(arr, divisor):
answer = []
for i in arr:
if i%divisor == 0:
answer.append(i)
answer.sort()
if len(answer) == 0:
answer = [-1]
return answer
간단히 arr에 있는 element들을 나누었을 때, 나머지가 0이라면 나누어 떨어지는 것이므로 0일 경우 answer에 append를 시켜주고, answer를 sort한다. 만약 이렇게 한 후 answer의 length가 0이라면 (즉 아무 element도 없다면), answer는 [-1]인 것으로 한다.
※ 다른 사람의 풀이
def solution(arr, divisor): return sorted([n for n in arr if n%divisor == 0]) or [-1]
이것은 프로그래머스 다른 사람의 풀이에 있는 좋아요 가장 많이 받은 풀이었다.
심지어 이 분께서는 한 줄로 풀었따
내가 한 풀이와는 논리는 비슷하지만 매우 간단하게 풀었기에 놀랬다. 특히 or [-1]이 왜인지는 모르겠지만, 한번도 생각해본 방법이 아니라서 조금 충격이었다
'알고리즘 테스트 > 프로그래머스 문제풀이 및 해설' 카테고리의 다른 글
<프로그래머스 문제풀이: 문자열 내 마음대로 정렬하기> Level 1 - 파이썬 (0) | 2020.11.06 |
---|---|
<프로그래머스 문제풀이: 두 정수 사이의 합> Level 1 - 파이썬 (0) | 2020.11.05 |
<프로그래머스 문제풀이: 같은 숫자는 싫어> Level 1 - 파이썬 (0) | 2020.10.27 |
<프로그래머스 문제풀이: 가운데 글자 가져오기> Level 1 - 파이썬 (0) | 2020.10.25 |
<프로그래머스 문제풀이: 2016년> Level1 - 파이썬 (0) | 2020.10.22 |