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
반응형
'인공지능 > 알고리즘' 카테고리의 다른 글
[파이썬 기초] 학점 만들기 (66) | 2024.01.23 |
---|---|
[파이썬 기초] 하샤드 만들기 (52) | 2024.01.21 |
[알고리즘] 파이썬 활용해서 구구단 구하기 (반복문 한번) (53) | 2024.01.20 |
[알고리즘] 왜 시간복잡도에 로그가 들어가지? O(nlogn)?.. (73) | 2023.12.03 |
[알고리즘] 재귀적 vs 귀납적 (60) | 2023.12.03 |