프로그래머스 파이썬 기초 해석 :: 홀짝에 따라 다른 값 반환하기(sum, range, 제곱하는 3가지 방법)

   

프로그래머스 URL

https://school.programmers.co.kr/learn/courses/30/lessons/181935



프로그래머스 코딩 카테고리 

코딩 기초 트레이닝

Day 4 연산, 조건문 - 홀짝에 따라 다른 값 반환하기

Lv.0





문제 설명

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


제한 사항

1 ≤ n ≤ 100



문제 이해

1. 홀/짝 구분

2. 홀수면 홀수때만 합하기 

2-2. 짝수면 짝수때만 제곱해서 합하기 



------------------------

 


내가 푼 풀이

if문이랑 for문을 썼고, 제곱은 math 패키지의 pow() 메서드를 사용했다. 
 
import math 
def solution(n):
    answer = 0 
    if n % 2 : 
        answer += i for i in range(1, n+1, +2)
             
            
    else: 
        for i in range(0,n+1,+2):
            answer += math.pow(i, 2)
    return answer


위 코드를 한 줄로 표현하면, 아래와 같은데,, 보시다시피 길고,, 별로다
return sum(i for i in range(1, n+1, +2)) if n % 2 else sum(math.pow(i, 2) for i in range(0,n+1,+2) )




업그레이드 (배운점/개선사항)  

1. range(start, stop, step) 

1번째 매개변수: start 은 시작하는 값. 
2번째 매개변수: stop-1 까지 돌아감. 따라서, 정수 n값까지 돌릴려면 n+1 까지 for문 돌리는걸로 해야됨
3번째 매개변수: step은 널뛰기, 기본값은 +1임. 숫자를 줄이면서 반복할려면 -1, -2 ,,,로 하면됨 



2. else문을 굳이 안쓰고, 바로 리턴값 넣는게 가능

else의 실행문이 한줄이면, 바로 return을 써서 else문 자체를 안써도 되는걸 새롭게 알았다. 

if num % 2 == 0:
    return "짝수"
return "홀수"


return값이 없을땐 else문을 써야하지만, return값을 주는거고 한줄로 쓸때는 else를 안써야겠다. 


def solution(n):
    if n%2:
        return sum(range(1,n+1,2))
    return sum([i*i for i in range(2,n+1,2)])


ㄴ else문을 안쓰고 return 값으로 바로 준 고수의 풀이 



3. sum() 

내장 함수로, sum(iterable, start=0) 숫자의 합을 계산하는 함수이다. 

첫번째 매개변수 iterable : 꼭 숫자로만 이뤄져야한다. 숫자로된 리스트, 튜플, 집합 등이 가능하다. 
두번째 매개변수 start : 시작하는 인덱스로 초기값은 0 


i) for문으로 숫자 더하는 코드 


numbers = [1, 2, 3, 4, 5]
total = 0

for num in numbers:
    total += num


ii) sum함수 쓰는 코드 


numbers = [1, 2, 3, 4, 5]
total = sum(numbers)


for문으로 단순히 숫자만 더할때는 sum 함수로 간결하게 코드를 짤 수 있다. 


sum(i for i in range(1, n+1, 2)) #내가 처음에 쓴 코드 

sum(range(1, n+1, 2))  #좋은 코드 



4. 제곱하는 방법

값을 제곱하는 방법은 여러가지인데, 그 중 3가지를 써보았다 

a) i * i 
똑같은 값을 두번 곱하는 제곱


b) i ** 2 
** 연산을 써서, 제곱 기능 쓰기
i ** 3 하면, 3제곱임 

c) math.pow(i, 2)  
math 모듈을 사용해서, 제곱 메서드를 쓰는 것
코드창의 첫 줄에 import math 로 선언을 해야 쓸 수 있다. 








댓글

이 블로그의 인기 게시물

[KT 에이블스쿨 - IT 트랜드] 국내외 AI 관련 규제

KT 에이블스쿨 : 6-7차 미니프로젝트 - 제안서 기반 솔류션 기획 및 설계

KT 에이블스쿨 : 클라우드 서비스 1일차 정리