문제 설명
array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요. divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요.
풀이
def solution(arr, divisor):
answer = []
count = 0
for n in arr:
if i%divisor == 0 :
answer.append(n)
count += 1
if count == 0 :
answer.append(-1)
answer.sort()
return answer
는 문제없이 실행되지만
def solution(arr, divisor):
answer = []
for n in arr:
if n % divisor == 0:
answer.append(n)
if len(answer) == 0:
answer.append(-1)
answer = answer.sort()
return answer
에서는 return 값이 null로 반환된다.
첫 번째 문제는, 두 번쨰 if문의 들여쓰기가 잘못되어 여러차례 list가 비어있는지 점검한다. 오류를 만들어내는 원인은 아니지만 불필요한 과정을 반복한다.
두 번째 문제는, answer = answer.sort() 부분에서 문제가 발생했다. answer.sort()는 내부적으로 정렬하지만 answer = answer.sort()를 사용하면서 새로운 answer이라는 변수를 만들어내는 것 같다.
비슷한 예시로
def solution(arr, divisor):
answer = []
for n in arr:
if n % divisor == 0:
answer.append(n)
if len(answer) == 0:
answer.append(-1)
li = answer.sort()
print(li) # null
print(answer) # [1,2,6,36]
return answer
라는 코드를 작성했을 때, print( li ) 에서는 null이, print( answer ) 에서는 [1,2,6,36] 등 목표로 하던 리스트가 반환된다.
새로운 변수에 값을 복사할 때 null이 전달되는 이유는 좀 더 공부가 필요할 것 같다.
=========================================================================
sort()는 return값이 없고 sorted()는 리턴값이 있다.
sort()는 내부 정렬을 하고, sorted()는 따로 정렬을 하지 않는다.
=========================================================================
def solution(arr, divisor):
answer = []
for n in arr:
if n % divisor==0:
answer.append(n)
if len(answer) ==0:
answer.append(-1)
return list(sorted(answer))
에서는 일부 test set에서 오류가 난다.
def solution(arr, divisor):
answer = []
for n in arr:
if n % divisor == 0:
answer.append(n)
if len(answer) == 0:
answer.append(-1)
answer.sort()
return answer
수정은 이렇게 하는 것이 좋을 것 같다.
출처
https://school.programmers.co.kr/learn/courses/30/lessons/12910
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
'Programing > 프로그래머스 오답노트' 카테고리의 다른 글
삼총사 - ( combinations 모듈 ) (0) | 2023.09.12 |
---|---|
최대공약수, 최소공배수 (유클리드 호제법,)(약수) (0) | 2023.09.11 |
벡터 내적 zip() 활용 (0) | 2023.09.11 |
제일 작은 수 제거하기, 오류 원인 찾기 (0) | 2023.09.11 |
return 한 줄 프로그래밍 (0) | 2023.09.07 |
댓글