[문제 요약]
입력으로 주어진 1 이상 100 이하의 정수 n에 대하여,
n이 홀수일 때, n 이하의 양의 정수 중 모든 홀수의 합을 구하고,
n이 짝수일 때, n 이하의 양의 정수 중 모든 짝수의 제곱의 합을 구하는 문제
[풀이 과정]
이 문제를 해결하기 위해서는 아래 세 가지를 코드로 구현할 수 있어야 한다.
1. 홀수/짝수를 판별할 수 있는 조건문
위키백과에 따르면 짝수라는 것은 2의 배수 혹은 2로 나누어 떨어지는 정수를 의미한다.
이를 Python 문법을 이용하여 구해보자.
Python에서는 % 라는 연산자를 이용하면 나눈 후 나머지 값을 구할 수 있다.
예를 들어 7 % 3 라는 식을 작성한다면, 7을 3으로 나누었을 때 나머지가 1이므로 결과는 1이 나올 것이다.
따라서 n이 짝수 즉, 2로 나누어 떨어지는 정수인지를 판단하기 위해서는 n%2==0 과 같이 조건식을 작성할 수 있다.
그럼 홀수는 어떻게 구할 수 있을까?
홀수는 짝수가 아닌 값이므로 n%2 != 0 과 같이 조건식을 작성해줄 수 있다.
다른 방식으로는 홀수는 2의 배수가 아닌 값을 의미하므로 n%2 == 1 과 같이 표현해줄 수도 있다.
2. 제곱 값
제곱(squard)이란, 같은 값을 곱한 결과이다.
따라서 제곱값은 n*n 과 같은 형태로 변수를 곱해주면 구할 수 있다.
3. 반복문을 이용하여 총 합 구하기
여러 번 반복해서 동일한 일을 수행하려고 할 때 반복문을 이용한다.
따라서 n이라는 값을 k번 더하려고 한다면 n + n + n + n + ... + n 이렇게 k번 작성해주는 것 대신 아래와 같이 반복문을 이용한 코드를 작성할 수 있다.
sum = 0
for _ in range(k):
sum = sum + k
이렇게 식을 작성하면 반복문 내부에 있는 코드를 k번 동작하므로, 수작업으로 작성해주지 않아도 합을 구할 수 있다.
이 원리를 이용하면 동일한 값을 더하는 것 뿐만 아니라 등비 수열의 합, 등차 수열의 합 등 다양한 조합의 합을 구할 수도 있다.
이 때, 주의해야 할 것은 반복문이 시작하기 전에 sum을 0으로 초기화해야 한다는 것이다.
초기화라는 것은 처음 변수를 선언하여 어떤 값을 지정해주는 것을 의미한다.
반복문 외부에서 초기화를 해주어야 하는 이유는, 반복문 내부에서 생성된 변수는 반복문 외부에서는 사용할 수 없기 때문이다.
또한 합을 구하기 전에 0으로 초기화해주어야 쓰레기 값이 들어있지 않은 상태에서 올바르게 합을 구할 수 있기 때문이다.
[코드]
def solution(n):
sum = 0
if n % 2 == 0:
for i in range(2, n+1, 2):
sum = sum + (i*i)
else:
for i in range(1, n+1, 2):
sum = sum + i
return sum
'Daily > Coding Test' 카테고리의 다른 글
[백준][DFS] 안전 영역 (+ RecursionError 핸들링 하기) (0) | 2025.04.04 |
---|---|
[프로그래머스][시뮬레이션] 바탕화면 정리 (0) | 2025.04.03 |
[백준] 피보나치 비스무리한 수열 (1) | 2025.04.02 |
[백준] 소수 구하기 (0) | 2025.03.31 |
[리트코드][정렬] Top K Freqent Element (0) | 2025.03.31 |