728x90
🔗 문제 링크
프로그래밍 강의 | 프로그래머스 스쿨
국비지원 K-디지털 기초역량훈련 코스, K-디지털 트레이닝 코스, 선배 개발자와 함께하는 라이브 교육, 데이터 사이언스, PCCP/PCCE 자격증, 세미나, 각종 프로그래밍 기초부터 실전까지 원하는 강
school.programmers.co.kr
📌 문제 개요
정수 n이 주어질 때,
- n이 홀수이면 n 이하의 홀수의 합을 반환
- n이 짝수이면 n 이하의 짝수의 제곱의 합을 반환하는 문제입니다.
n = 7
1 + 3 + 5 + 7 = 16
n = 10
2² + 4² + 6² + 8² + 10²
= 4 + 16 + 36 + 64 + 100
= 220
📌 접근 방법
먼저 n이 홀수인지 짝수인지 확인합니다.
- 홀수라면 1부터 2씩 증가하며 홀수의 합을 계산합니다.
- 짝수라면 2부터 2씩 증가하며 짝수의 제곱을 더합니다.
반복문의 증가값을 2로 설정하여 필요한 숫자만 순회하도록 구현했습니다.
시간복잡도는 O(N) 입니다.
📌 핵심 아이디어
1. 홀수와 짝수 분기
n % 2를 이용하여 어떤 계산을 수행할지 결정합니다.
if (n % 2 == 0) {
...
} else {
...
}
2. 필요한 숫자만 순회
짝수라면 2부터 시작하여 2씩 증가합니다.
for (int i = 2; i <= n; i += 2) {
answer += i * i;
}
홀수라면 1부터 시작하여 2씩 증가합니다.
for (int i = 1; i <= n; i += 2) {
answer += i;
}
이렇게 하면 불필요하게 모든 숫자를 검사하지 않아도 됩니다.
3. 제곱 계산
짝수인 경우에는 숫자의 제곱을 더해야 합니다.
Math.pow()보다 정수 연산인 i * i가 더 간단하고 성능도 좋습니다.
answer += i * i;
📌 처리 흐름
n 입력
│
▼
홀수인가?
│
┌─┴────────────┐
│ │
예 아니오
│ │
홀수 합 계산 짝수 제곱 합 계산
│ │
└──────┬───────┘
▼
결과 반환
📌 전체 코드
package level0;
public class No80 {
public static void main(String[] args) {
int n = 10;
int answer = 0;
if (n % 2 == 0) {
for (int i = 2; i <= n; i += 2) {
answer += i * i;
}
} else {
for (int i = 1; i <= n; i += 2) {
answer += i;
}
}
System.out.println(answer);
}
}
📄 정리
- n의 홀짝 여부에 따라 계산 방식을 분기한다.
- 반복문의 증가값을 2로 설정하여 필요한 숫자만 순회한다.
- 짝수는 제곱의 합, 홀수는 합계를 계산한다.
- 제곱은 Math.pow()보다 i * i를 사용하는 것이 간단하고 효율적이다.
- 조건문과 반복문의 기본 개념을 함께 연습하기 좋은 문제이다.
728x90
'코테(Solved.ac + Programmers)' 카테고리의 다른 글
| 프로그래머스 n개 간격의 원소들 JAVA 풀이 (0) | 2026.07.16 |
|---|---|
| 프로그래머스 n번째 원소부터 JAVA 풀이 (Level 0) (0) | 2026.07.15 |
| 프로그래머스 바탕화면 정리 JAVA 풀이|최소 드래그 영역 구하기 (0) | 2026.07.12 |
| 프로그래머스 홀수 vs 짝수 JAVA 풀이 (StringBuilder 활용, 문자열 이어붙이기) (0) | 2026.07.11 |
| 프로그래머스 삼각형의 완성조건 (1) JAVA 풀이 (0) | 2026.07.10 |