
처음 문제를 읽고 직관적으로 떠오른 방법부터 소개한다.
1. n이 홀수와 짝수인 경우를 나눈다.
2-1. n이 홀수인 경우 1부터 n까지 순회하며 홀수만 더한다.
2-2. n이 짝수인 경우 1부터 n까지 순회하며 짝수만 제곱해서 더한다.
3. sum을 출력한다.
class Solution {
public int solution(int n) {
int sum = 0;
// n이 홀수인 경우
if (n % 2 == 1) {
// 1부터 n까지 전부 순회
for (int i = 1; i <= n; i++) {
// 홀수만 더하기
if (i % 2 == 1) {
sum += i;
}
}
// n이 짝수인 경우
} else {
// 1부터 n까지 전부 순회
for (int i = 1; i <= n; i++) {
// 짝수만 제곱해서 더하기
if (i % 2 == 0) {
sum += i * i;
}
}
}
return sum;
}
}
이미 n이 홀수인 경우와 짝수인 경우를 나눴는데 i까지 전부 순회하며 홀수/짝수를 판별해야 하나..?
더 최적화할 수 있는 방법은 없을까?
최적화 할 수 있는 방법이 떠올랐다.
1. i의 시작점을 케이스에 맞게 수정한다.
2. i를 2씩 증가시킨다.
class Solution {
public int solution(int n) {
int sum = 0;
if (n % 2 == 1) {
for (int i=1; i<=n; i+=2) {
sum += i;
}
} else {
for (int i=2; i<=n; i+=2) {
sum += i*i;
}
}
return sum;
}
}
매우 쉽고 간단한 문제지만 처음 들었던 생각에서 개선할 수 있는 점이 존재하기 때문에 블로그에 남겨본다.
'PS' 카테고리의 다른 글
| [프로그래머스] 이상한 문자 만들기 (0) | 2026.06.25 |
|---|---|
| [프로그래머스] 최대공약수와 최소공배수 (0) | 2026.06.23 |
| [프로그래머스] 두 개 뽑아서 더하기 (1) | 2026.06.12 |
| [프로그래머스] 원하는 문자열 찾기 (0) | 2026.06.02 |
| 이곳은 나의 PS 복습을 위한 공간입니다. (0) | 2026.05.15 |