-
[문제풀이 후기] 프로그래머스 #181935 - 홀짝에 따라 다른 값 반환하기문제풀이/Programmers 2025. 12. 21. 16:19
https://school.programmers.co.kr/learn/courses/30/lessons/181935
기본 상위 코드
let result = 0;첫 번째 시도 (결과 : 성공)
접근 방식
1. n 이 짝수인 경우, 2부터 n 까지 2씩 더하며 제곱 수 ++ (Math.pow 활용)
2. n 이 홀수인 경우, 1부터 n 까지 2씩 더하며 ++if (n % 2 === 0) { for (let i = 2; i <= n; i = i + 2) { result += Math.pow(i, 2) } } else { for (let i = 1; i <= n; i = i + 2) { result += i } }
규칙
1. n 이 짝수인 경우, 자연수의 제곱의 합 공식 활용
2. n 이 홀수인 경우, 수학적 귀납법 활용짝수들의 제곱의 합
# 2부터 자연수 n (n = 짝수) 까지의 제곱수의 합 2^2 + 4^2 + ... + n^2 # 짝수 n 을 2k (k = n/2) 라고 한다면 (2*1)^2 + (2*2)^2 + ... + (2k)^2 -> (2^2*1^2) + (2^2*2^2) + ... + (2^2*k^2) # 1부터 자연수 N까지의 제곱의 합 공식 1^2 + 2^2 + ... + N^2 -> N * (N+1) * (2N+1) / 6 # 다시 2부터 2k 까지의 공식을 보면 (2^2*1^2) + (2^2*2^2) + ... + (2^2*k^2) -> 4 * (1^2 + 2^2 + ... + k^2) -> 4 * k * (k+1) * (2k+1) / 6 # 여기서 k 를 n/2 로 변환하면 4 * (n/2) * (n/2+1) * (2*n/2+1) / 6 -> 4 * (n/2) * ((n+2)/2) * (n+1) / 6 -> n * (n+1) * (n+2) / 6
→ n * (n+1) * (n+2) / 61부터 자연수 n 까지의 홀수의 합
# n 이 1일 때 1 = 1^2 # n 이 3일 때 1 + 3 = 4 = 2^2 # n 이 5일 때 1 + 3 + 5 = 9 = 3^2 # n 이 7일 때 1 + 3 + 5 + 7 = 16 = 4^2
→ ((n+1) / 2)^2두 번째 시도 (결과 : 성공)
if (n % 2 === 0) { result = (n * (n + 1) * (n + 2)) / 6; } else { result = Math.pow((n + 1) / 2, 2); }후기
이래서 수학이 중요하구나ㅠㅠ
'문제풀이 > Programmers' 카테고리의 다른 글
[문제풀이 후기] 프로그래머스 #181860 - 빈 배열에 추가, 삭제하기 (0) 2026.01.02 [문제풀이 후기] 프로그래머스 #181916 - 주사위 게임 3 (0) 2025.12.26 [문제풀이 후기] 프로그래머스 #181921 - 배열 만들기 2 (0) 2025.12.26 [문제풀이 후기] 프로그래머스 #181930 - 주사위 게임 2 (0) 2025.12.22 [문제풀이 후기] 프로그래머스 #181932 - 코드 처리하기 (0) 2025.12.21