본문 바로가기
coding test/Java

프로그래머스 ) lv.0 ) 홀짝에 따라 다른 값 반환하기

by heidish 2023. 6. 21.
반응형

 

 

 

 

 

 

 

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 뒤에 왜 저렇게 되는건지는 모르겠다.... 왜지,,,!

(혹시 위 코드에 대한 설명이 가능한 분이 이걸 보신다면 알려주시면 너무 감사드릴것 같습니다. ;-;)

 

 

 

 

 

반응형

댓글