Web, View/코딩테스트 연습

[JavaScript] 홀짝에 따라 다른 값 반환하기 - 181935

kaleb 2023. 12. 6. 11:00
728x90

안녕하세요 미어캣입니다.

 

오늘은 프로그래머스 기초문제 홀짝에 따라 다른 값 반환하기 문제를 풀어보도록 하겠습니다.

 

문제설명 :

 

양의 정수 n이 매개변수로 주어질 때, n이 홀수라면 n 이하의 홀수인 모든 양의 정수 합을 return,

n이 짝수라면 n 이하의 짝수인 모든 양의 정수의 제곱의 합을 return 하는 soulution 함수를 작성하시오.

 

제한사항 :

1 <= n <= 100

 

 

 

문제 : 

function solution(n) {
    var answer = 0;
    return answer;
}

 

복잡해 보이는 문제라도 프로그래머스 기초문제를 풀어보면 점진적으로 고도화 시키고있다는 느낌이 듭니다.

 

앞서 풀어본 문제들을 잘 활용하면 의외로 간단하게 해결 할 수 있습니다.

 

 

정답 : 

더보기
function solution(n) {
    let answer= 0;
    
    if(n>= 1 && n <= 100) { //제한사항
        if(n%2 === 1) { // 홀수의 경우
            for(let i = 1; i<=n; i +=2) {
                answer += i;
            }
        } else { // 짝수의 경우
            for(let i = 2; i<=n; i +=2) {
                answer +=(i*i);
            }
        }
        return answer;  
    }
}

 

처음에는 홀수의 경우, 짝수의 경우에 따라 각각 for문을 사용해서 처리하도록 하였는데

 

더 간단하게 줄 일 수 있을 것 같아서

 

function solution(n) {
    let answer= 0;
    
    if(n>= 1 && n <= 100) { //제한사항
         
     	for(let i = 1; i <= n; i += 2) {
        
        	if(n % 2 === 1) { // 홀수의 경우
            	answer += i;  
        	} else { // 짝수의 경우
            	answer += (i + 1) * (i + 1);
        	}
    	}
    	return answer;
    }
}

 

for문 사용을 줄이고 홀/짝의 경우로 분기처리하여서 해결하였습니다.

 

이 문제에 대해 다른 풀이를 봤는데, 수학적으로 접근하신 분들도 많았고 다른 내장함수들을 사용함으로써

 

오히려 더 복잡한 느낌이 들어서 참고만 하였습니다.

 

각자 필요에 의한 참고만 하면 될 것 같습니다.

 

감사합니다. 파이팅..!

반응형