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구문 내에서 항상 넣었던 것 같은데

바로 리턴될 수도 있었군요. 리턴은 어쨌거나 다른 어딘가로 값을 넘기는 것이어서 그 안에서 계산하는 것이 왠지 불안하게 느껴져 뭔가 연산이 들어가는 것은 불편하게 느껴지지만 그것이 효율적이고 해당 연산이 정확하다는 확신이 있다는 전제라면 코드야 짧을수록 좋겠죠?