프로그래머스 파이썬 기초 해석 :: 홀짝에 따라 다른 값 반환하기(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번째 매개변수: 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 로 선언을 해야 쓸 수 있다.
댓글
댓글 쓰기