반응형
SOL )
class Solution {
public int solution(int n) {
int answer = 0;
if (n % 2 == 1) {
for (int i = 0; i <= n / 2; i ++){
answer += (1 + i*2);
}
} else {
for (int i = 0; i < n / 2; i ++){
answer += Math.pow((i+1)*2, 2);
}
}
return answer;
}
}
분명 쉬운 문제인데, 왠지 모르게 조금 헤맨 것 같다..
처음 위와 같이 풀었을 때 가장 먼저 홀수/짝수 구분을 한 뒤, 각각의 경우에 for문을 돌며 값을 더하게 해주었다.
분명 더 좋은 방법이 있을꺼라는 생각에 다른 풀이를 여러개 봤다.
OTHER SOL )
class Solution {
public int solution(int n) {
if (n % 2 == 1) {
return (n + 1) * (n + 1) / 2 / 2;
} else {
return 4 * n/2 * (n/2 + 1) * (2 * n/2 + 1) / 6;
}
}
}
동일하게 첫 시작은 홀수/짝수 구분이다.
근데 사실 각 return 뒤에 왜 저렇게 되는건지는 모르겠다.... 왜지,,,!
(혹시 위 코드에 대한 설명이 가능한 분이 이걸 보신다면 알려주시면 너무 감사드릴것 같습니다. ;-;)
반응형
'coding test > Java' 카테고리의 다른 글
프로그래머스 ) lv.0 ) 등차수열의 특정한 항만 더하기 (0) | 2023.06.21 |
---|---|
프로그래머스 ) lv.0 ) 조건 문자열 (0) | 2023.06.21 |
프로그래머스 ) lv.0 ) 공배수 (0) | 2023.06.21 |
프로그래머스 ) lv.0 ) n의 배수 (0) | 2023.06.21 |
프로그래머스 ) lv.0 ) 두 수의 연산값 비교하기 (0) | 2023.06.21 |
댓글