나누어 떨어지는 숫자 배열

sky·2022년 7월 22일

Programmers Lv.1(Python)

목록 보기
20/28
post-thumbnail

문제 설명

문제

array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요.
divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요.

제한사항

  • arr은 자연수를 담은 배열입니다.
  • 정수 i, j에 대해 i ≠ j 이면 arr[i] ≠ arr[j] 입니다.
  • divisor는 자연수입니다.
  • array는 길이 1 이상인 배열입니다.

입출력 예

arrdivisorreturn
[5, 9, 7, 10]5[5, 10]
[2, 36, 1, 3]1[1, 2, 3, 36]
[3,2,6]10[-1]
  • 입출력 예#1
    arr의 원소 중 5로 나누어 떨어지는 원소는 5와 10입니다. 따라서 [5, 10]을 리턴합니다.
  • 입출력 예#2
    arr의 모든 원소는 1으로 나누어 떨어집니다. 원소를 오름차순으로 정렬해 [1, 2, 3, 36]을 리턴합니다.
  • 입출력 예#3
    3, 2, 6은 10으로 나누어 떨어지지 않습니다. 나누어 떨어지는 원소가 없으므로 [-1]을 리턴합니다.

Solution

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

그래도 곧 방법을 찾고 성공시켰다.

Another Solution

def solution(arr, divisor): return sorted([n for n in arr if n%divisor == 0]) or [-1]

한 줄 코드... 왜 이 생각을 못 했을까 잠시 반성했다.


Total Time

  • 2022-07-22 | 19:05 - 19:45

Review

막혔던 곳
1. 조건문에서 else까지 쓰면 입출력 예#1에서 5가 5를 나누어지지 않는다고 판단해버린다. 이유는 모르겠다.
2. return answer.sort() 코드를 작성했더니 null값이 출력된다. 리스트와 튜플의 차이점때문인가 싶기도 한데 정확한 이유는 모르겠다.

profile
개발자가 되고 싶은 1人

0개의 댓글