[알고리즘 풀이] 프로그래머스 LV1 '나누어 떨어지는 숫자배열'

Taewan Kim·2019년 1월 27일
0
post-thumbnail

문제설명

array의 각 원소 중 divisor로 나누어 떨어지는 값을 오름차순(작은 수부터 큰 수 순서)으로 정렬한 배열을 반환합니다.
divisor로 나누어 떨어지는 원소가 하나도 없다면 배열에 -1을 담아 반환하세요.

예시

  1. array = [5,9,7,10]
    divisor = 5
    array의 원소 중 5로 나누어지는 수는 5와 10만 있으므로 [5,10]을 반환합니다.

  2. array = [3,2,6]
    divisor = 10
    array의 원소 중 10으로 나누어떨어지는 값이 없기에 [-1]을 반환합니다.


해설

  1. 우선 array의 모든 원소들을 거쳐가면서 divisor로 나누는
    과정이 필요합니다. 그리고 나누어떨어질 경우에는 answer라는
    리스트에 값을 바로 넣어줍니다.
def solution(arr, divisor):
		answer = []
    	for in arr:
    		if(i%divisor == 0): #나누어 떨어질 경우
        		answer.append(i) #answer에 넣어줌
  1. 여기서 주의해야할 점은 array의 원소 중 divisor로
    나누어떨어지는 값이 없을 경우엔 [-1]을 반환해야합니다.
    저 같은 경우에는 이런 예외상황은 if문을 따로 설정해주었습니다.
def solution(arr, divisor):
		answer = []
    	for in arr:
    		if(i%divisor == 0):   
        		answer.append(i)   
        if(len(answer) == 0):      #answer의 길이가 0이면 아무 원소도 안들어간 것과 동일(결국 나누어떨어진 값이 없음)
        	return [-1]
  1. 마지막으로 나누어떨어졌을 경우에 값을 반환해주어야합니다. 근데 여기서 문제를 다시 보면 오름차순이라는 조건이 있는데, 이건 단순히 sorted()로 설정하겠습니다.
def solution(arr, divisor):
		answer = []
    	for in arr:
    		if(i%divisor == 0):    
        		answer.append(i)   
        if(len(answer) == 0):      
        	return [-1]
        else:
        	return sorted(answer)     #나누어떨어진 값이 들어있는 answer리스트를 오름차순으로 정렬해서 반환합니다.

채점결과

모두들 즐거운 코딩하시길 바라면서 전 20000~:)

profile
안드로이드 네이티브 앱 개발과 파이썬 공부중인 문과전공 대학생입니다 :)

0개의 댓글