본문 바로가기
인공지능/알고리즘

[알고리즘] 홀짝에 따라 다른값 변환 (프로그래머스)

by 찌니와 용용 2024. 1. 20.
728x90
반응형

문제 설명

 

양의 정수 n이 매개변수로 주어질 때, n이 홀수라면 n 이하의 홀수인 모든 양의 정수의 합을 return 하고 n이 짝수라면 n 이하의 짝수인 모든 양의 정수의 제곱의 합을 return 하는 solution 함수를 작성해 주세요.

 

초기에 내가 짜놓은 코드 (장황하다...)

def solution1(n):
    if n % 2 == 1: # 나머지가 1이라는 결과를 보여주기 위한 코드 
        answer = sum(list(map(lambda x : 2*x +1 , range(0,(n//2)+1,1))))
    else:
        answer = sum(list(map(lambda x : x**2, range(0,n+1,1))))
    return answer

 

초기에 내가 짜놓은 코드 (장황한것 마찬가지나 나의 사고의 흐름에 따라 조금씩 변화함..)

def solution2(n):
    if n % 2: # python 에서는 n%2 값이 기본적으로 1이면 True 로 반환되므로 solution1의 조건을 간결하게 할 수 있음. 
        answer = sum(list(map(lambda x : 2*x +1 , range(0,(n//2)+1,1))))
    else:
        answer = sum(list(map(lambda x : x**2, range(0,n+1,2)))) # 2의 배수에대한 값만 불러올 것이기 때문에
    return answer

 

마지막 효율적이면서 간결한 코드

def solution(n):
    return sum([i if n%2 else i**2 for i in range(n%2, n+1, 2)])
728x90
반응형