2019년 1월 21일 월요일

#9 알고리즘 연습 나누어떨어지는숫자배열-PYTHON


나누어 떨어지는 숫자배열


문제 설명
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]을 리턴합니다.



문제풀이 IDEA

python에서는 list를 동적으로 사용할수 있기 때문에 반복문과 조건문 그리고 append를 이용해주면 기본 코드를 짤 수 있다.

하지만 return 값 또한 list이고 반복문과 조건문이 들어간다면
list comprehension을 사용한다면 조금더 코드가 간결하게 작성될것 같다




나의코드⭐


1

2
3
4
5
6
def solution(arr, divisor):
    answer = [i for i in arr if i%divisor==0]   i라는 애들을 answer list안에 담는데 arr배열의 원소중
                                                divisor로 나누어 떨어지는 숫자들을 i로 가져와서 담겠다라는 의미
   
    if len(answer) ==0:                         그런데 만약 list가 빈 list라면 나누어 떨어지는 숫자가 없는것            
        answer.append(-1)                       따라서 예외처리로 -1을 해준다
    return sorted(answer)                       sort한 값을 answer에 넘겨준다(sorted는 sort와 달리 원래 배열을 바꾸지X)
값만 정렬된상태로 1회만 쓰는 용도






참고해볼만한 것


⭐List comprehension


Syntax : [ (expression) for item in list if conditional ]

Example :
>>>[ n for n in range(10) if x%2 ==0]

==>[0, 2, 4, 6, 8]



>>>[ n + 1 for n in range(10) if x%2 ==0]

==>[1, 3, 5, 7, 9]



>>>[ n + m    for n in [1,2,3]     for y in [1,2,3] ]

==>[2, 4, 6]


삼항연산자


삼항연산자가 일반 if문과 속도차이가 없다는 글을 봤기도 했고

가독성측면에서 그다지 좋다는 느낌을 못받은만큼(개인적) 굳이 3항 연산자를 이용해
조건문처리를 해주지 않았다

그래도 쓰는 방법을 알고 넘어가자면

예를 통해 알아보자

조건문과 삼항연산자

if x%2 ==0:
    print("짝수입니다")
else:
    print("홀수입니다")

     
       ⇵⇵⇵⇵⇵⇵⇵⇵


print("짝수입니다") if x%2==0 else print("홀수입니다")





출처:https://programmers.co.kr/

댓글 없음:

댓글 쓰기

가장 많이 본 글