CodingTest/Programmers
[ 프로그래머스 ] 나누어 떨어지는 숫자 배열
EEOOOO
2022. 6. 23. 19:05
/ 제출 1 /
def solution(arr, divisor):
answer = []
for i in range(len(arr)):
if arr[i] % divisor == 0:
answer.append(arr[i])
if answer:
return sorted(answer)
else:
return [-1]
채점 결과
정확성: 100.0
합계: 100.0 / 100.0
/ 다른 분들 풀이 /
사실 다른 분들은 한 줄짜리 코드에 대해 되게 우와우와하십니다.
보다 보니 나는 개인적으로 눈에 잘 안 들어와서 내 취향은 아닌 것 같습니다..
물론 계속 말하지만 할 줄 알면서 선택에 의해 안 하는 것과, 몰라서 못하는 것과는 차이가 있으니 한 줄로 구현하는 것도 익혀는 둬야 합니다.
def solution(arr, divisor): return sorted([n for n in arr if n%divisor == 0]) or [-1]
뭐 앞서 말한 것과는 별개로
리턴문에서 이렇게 or연산으로 true/false를 구분하는 건 낯설었습니다.
or 자체로 true/false따져 후연산을 안 하거나 하는 등 효율성 높이는 방식은 매우 선호합니다.
해서 or로 true/false따질 때는 if구문 내에서 항상 넣었던 것 같은데
바로 리턴될 수도 있었군요. 리턴은 어쨌거나 다른 어딘가로 값을 넘기는 것이어서 그 안에서 계산하는 것이 왠지 불안하게 느껴져 뭔가 연산이 들어가는 것은 불편하게 느껴지지만 그것이 효율적이고 해당 연산이 정확하다는 확신이 있다는 전제라면 코드야 짧을수록 좋겠죠?