https://school.programmers.co.kr/learn/courses/30/lessons/12910
리스트에 있는 원소를 하나하나씩 diviosor로 나누어떨어지는지 확인하고, 나누어 떨어진다면 비어있는 리스트인 result에 하나씩 추가하였다. 만약 연산 이후에도 result에 하나의 원소도 없다면, 문제의 요구대로 -1만 삽입해주도록 예외처리를 해주었다.
def solution(arr, divisor):
result = []
for i in range (len(arr)):
if arr[i] % divisor == 0:
result.append(arr[i])
if len(result) == 0:
result.append(-1)
result.sort()
return result
이번엔 다른 사람의 풀이를 참고해보자. 한줄짜리 풀이도 있었지만, 실제 시험장에서 떠올릴 수 있을만한 가치있는 코드를 가져와봤다.
def solution(arr, divisor):
arr = [x for x in arr if x % divisor == 0];
arr.sort();
return arr if len(arr) != 0 else [-1];
코드를 해석해보면 arr이라는 리스트에 나머지가 0이 되도록 하는 x값을 원소로 하나하나씩 집어넣은 것이다.
그리고 나서 정렬을 해준 뒤, return문에 예외처리를 포함하였다.
논리 자체는 같지만, 코드가 훨씬 간결해서 보기 좋다.
'Algorithm > Programmers lv.1' 카테고리의 다른 글
[프로그래머스] 핸드폰 번호 가리기(range 활용, join함수로 문자열을 리스트로 변환, 문자열 다루기) (0) | 2024.07.08 |
---|---|
[프로그래머스] 제일 작은 수 제거하기 (0) | 2024.07.08 |
[프로그래머스] 없는 숫자 더하기 (0) | 2024.07.07 |
[프로그래머스] 음양 더하기(zip함수) (0) | 2024.07.07 |
[프로그래머스] 콜라츠 추측 (0) | 2024.07.06 |