문제설명
양의 정수 n이 매개변수로 주어질 때, n이 홀수라면 n 이하의 홀수인 모든 양의 정수의 합을 return 하고 n이 짝수라면 n 이하의 짝수인 모든 양의 정수의 제곱의 합을 return 하는 solution 함수를 작성해 주세요.
제한사항
- 1 ≤ n ≤ 100
입출력 예
입출력 예 설명
입출력 예 #1
- 예제 1번의 n은 7로 홀수입니다. 7 이하의 모든 양의 홀수는 1, 3, 5, 7이고 이들의 합인 1 + 3 + 5 + 7 = 16을 return 합니다.
입출력 예 #2
- 예제 2번의 n은 10으로 짝수입니다. 10 이하의 모든 양의 짝수는 2, 4, 6, 8, 10이고 이들의 제곱의 합인 22 + 42 + 62 + 82 + 102 = 4 + 16 + 36 + 64 + 100 = 220을 return 합니다.
코드 설명
이 문제는 n이 홀수라면 n 이하의 홀수인 모든 양의 정수의 합을 return 하고 n이 짝수라면 n 이하의 짝수인 모든 양의 정수의 제곱의 합을 return하는 문제입니다.
var answer = 0;
먼저 정답 값을 넣어줄 answer를 선언하고 초기화해줍니다.
if(n%2!=0){ // 홀수라면
}else{ // 짝수라면
}
그후 저는 if문을 사용하여 n이 홀수 인지 짝수 인지 구해주었습니다.
for(var i = 1; i <= n; i+=2)
answer += i;
n값이 홀수이면 i를 1부터 시작하여 n까지 반복하게 해준 다음 반복할 때마다 i에 2를 더하여 i가 홀수가 되도록 만들어주었습니다. 그 다음 answer에 i값을 더해 n이하의 모든 홀수의 합을 구해주었습니다.
for(var i = 2; i <= n; i+=2)
answer += Math.pow(i,2);
n이 짝수라면 i를 2부터 시작하여 n까지 반복해주고 반복할 때마다 i에 2를 더하여 i가 짝수가 되도록 만들어주었습니다. 그 다음 Math.pow() 메소드를 이용하여 i의 제곱을 구해주었습니다.
그리고 answer에 그 값들을 넣어 n이하의 짝수인 모든 수의 제곱의 합을 구해주었습니다.
소스코드&결과
코드
function solution(n) {
var answer = 0;
if(n%2!=0){ // 홀수라면
for(var i = 1; i <= n; i+=2)
answer += i;
}else{ // 짝수라면
for(var i = 2; i <= n; i+=2)
answer += Math.pow(i,2);
}
return answer;
}
결과
다른 사람이 짠 코드
function solution(n) {
if(n%2===1)
return (n+1)/2*((n + 1)/2) ;
else
return n*(n+1)*(n+2)/6;
}
위의 코드는 n이 짝수일 때는 등차수열의 합 공식을 적용하였고, n이 홀수일 때는 자연수 거듭 제곱의 합을 구하는 공식을 적용하였습니다. 반복문을 활용하지 않고 문제를 풀 수 있다니..! 정말 대단하다는 생각이 들었습니다.
'Coding Test > 프로그래머스' 카테고리의 다른 글
[JAVA] 추억 점수 (8) | 2023.06.10 |
---|---|
[JAVA] 가장 가까운 같은 글자 (2) | 2023.06.08 |
[JAVA] 두 개 뽑아서 더하기 (3) | 2023.06.05 |
[JAVA] 콜라 문제 (4) | 2023.06.05 |
[JAVA] K번째수 (2) | 2023.06.02 |