반응형
코딩테스트 연습 - 나누어 떨어지는 숫자 배열
array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요. divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하
programmers.co.kr
Solution1. (내 풀이)
문제 설명 순서대로 풀이한 방식이다.
1) 리스트를 순회하면서, 조건에 맞는지 검사한다.
2) 조건에 맞으면 answer list에 추가한다.
3) 리스트를 다 순회한 후에, answer list가 비어있으면 -1을 추가해준다.
4) 정렬하여 return 한다.
def solution(arr, divisor):
answer = []
# 조건에 만족하면 answer에 추가
for i in arr:
if i % divisor == 0:
answer.append(i)
# list를 모두 검사했는데, 조건에 만족하는 것이 없어서 비어있을 경우 -1 넣어주기
if len(answer) == 0:
answer.append(-1)
return sorted(answer)
Solution2.
solution1과 풀이 아이디어는 비슷하지만, 표기 방식이 깔끔하다.
python의 list comprehension을 활용해서, 조건에 맞는 값을 list로 만들어주었다.
여기서 또 인상적이었던 부분은 [ ] or [ ] 인데, 앞에 리스트가 참이 아닐때 (비어있을때) 뒤에 리스트를 만들어준다.
그래서 리스트가 비어있는지 따로 검사하지 않고, 간단하게 조건을 추가할 수 있었다.
def solution(arr, divisor):
answer = [x for x in arr if x % divisor == 0] or [-1]
return sorted(answer)
(Tutorial) Python List Comprehension
Learn how to effectively use list comprehension in Python to create lists, to replace (nested) for loops and the map(), filter() and reduce() functions, ...!
www.datacamp.com
반응형
'Today I Learned > Python 문제풀이' 카테고리의 다른 글
프로그래머스 lv1. 음양더하기 (zip 사용해서 간단하게) (0) | 2023.08.10 |
---|---|
[프로그래머스] lv0. 더크게 합치기 (0) | 2023.06.09 |
[프로그래머스] lv2. 프린터 (0) | 2020.11.16 |
[프로그래머스] Lv1. 완주하지 못한 선수 (0) | 2020.11.06 |
[프로그래머스] Lv2. 기능개발 (스택/큐) (0) | 2020.10.31 |