Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
Tags
- Java
- programmers
- 코테
- ScreenSize
- 코딩테스트 자바
- 자바 코딩테스트
- 자바
- viewpager2
- Android
- kotlin
- CodingTest
- Coding-Test
- javaCoding
- 오블완
- 뷰바인딩
- 코딩테스트
- JavaCodingTest
- 코테자바
- 산타 환급반
- baekjoon
- BottomNavigation
- 안드로이드
- pattern
- 코딩테스트 JAVA
- 티스토리챌린지
- 백준
- ModelViewPresenter
- 코틀린
- CodingTestJava
- 화면 크기 구하기
Archives
- Today
- Total
KDLiam
[Programmers 코딩 기초 트레이닝 : Java] 홀짝에 따라 다른 값 반환하기 본문
Problems(Java)/Programmers
[Programmers 코딩 기초 트레이닝 : Java] 홀짝에 따라 다른 값 반환하기
KDLiam 2025. 10. 2. 10:08➕ 홀수 합 vs 짝수 제곱합 (프로그래머스 181935번)
📌 문제 링크: 프로그래머스 181935 - 홀수 vs 짝수
📖 문제 설명
주어진 정수 n에 대하여,
- n이 홀수면 → 1 + 3 + 5 + ... + n
- n이 짝수면 → 2² + 4² + 6² + ... + n²
을 구하는 문제입니다.
✨ 첫 번째 풀이 (반복문)
class Solution {
public int solution(int n) {
int answer = 0;
boolean isEven = n % 2 == 0;
if (!isEven) { // odd
for (int i = 1; i <= n; i += 2) {
answer += i;
}
} else { // even
for (int i = 2; i <= n; i += 2) {
answer += (i * i);
}
}
return answer;
}
}
💡 특징
- 홀수일 때는 홀수들만 더하고, 짝수일 때는 짝수의 제곱들을 더함
- 직관적이고 이해하기 쉽지만, 반복문을 n/2번 수행해야 함
- 시간복잡도: O(n/2) ≈ O(n)
✨ 두 번째 풀이 (수학적 공식 활용)
class Solution {
public int solution(int n) {
if(n%2==1) { // odd
int k = (n+1) / 2;
return k*k;
} else { // even
int k = n / 2;
return 4 * k * (k+1) * (2*k+1) / 6;
}
}
}
💡 수학적 공식 정리
- 홀수 합 공식
1 + 3 + 5 + ... + (2k - 1) = k²
👉 여기서 k = (n+1)/2 - 짝수 제곱합 공식
2² + 4² + ... + (2k)² = 4 × k(k+1)(2k+1) / 6
👉 여기서 k = n/2
📊 효율성 비교
항목반복문 풀이수학 공식 풀이
| 직관성 | 높음 | 중간 (수학적 사고 필요) |
| 시간복잡도 | O(n) | O(1) |
| 공간복잡도 | O(1) | O(1) |
| 성능 | n이 클수록 느려짐 | n이 커져도 동일한 속도 |
🔑 결론: 수학 공식을 활용하면 입력 크기에 상관없이 항상 즉시 결과를 얻을 수 있음
'Problems(Java) > Programmers' 카테고리의 다른 글
| [Programmers 코딩 기초 트레이닝 : Java] 코드 처리하기 (0) | 2025.10.10 |
|---|---|
| [Programmers 코딩 기초 트레이닝 : Java] 조건 문자열 (0) | 2025.10.02 |
| [Programmers 코딩 기초 트레이닝 : Java] 원소들의 곱과 합 (0) | 2025.10.01 |
| [Programmers 코딩 기초 트레이닝 : Java] 두 수의 연산값 비교하기 (0) | 2025.10.01 |
| [Programmers 코딩 기초 트레이닝 : Java] 더 크게 합치기 (0) | 2025.10.01 |