Software Engineering/Algorithm Test
Day4_코딩 기초 트레이닝_프로그래머스
Nomad Kim
2023. 7. 15. 06:54
홀짝에 따라 다른 값 반환하기
Description
양의 정수 n이 매개변수로 주어질 때,
n이 홀수라면 n 이하의 홀수인 모든 양의 정수의 합을 return 하고
n이 짝수라면 n 이하의 짝수인 모든 양의 정수의 제곱의 합을 return 하는
solution 함수를 작성해 주세요.
My answer was
function solution(n) {
const isOdd = !!(n % 2);
let result = 0;
if(isOdd) {
for (let i = 1; i < n+1; i = i + 2) {
result += i
}
} else {
for (let i = 2; i < n+1; i = i + 2) {
result += Math.pow(i, 2)
}
}
return result;
}
Best answer was
function solution(n) {
if(n%2===1)
return (n+1)/2*((n + 1)/2) ;
else
return n*(n+1)*(n+2)/6;
}
// n이 짝수일 때는 등차수열의 합 공식을 적용하였고,
// n이 홀수일 때는 자연수 거듭 제곱의 합을 구하는 공식을 적용한 것으로 보입니다. => 확인필요!
조건 문자열
Description
문자열에 따라 다음과 같이 두 수의 크기를 비교하려고 합니다.
두 수가 n과 m이라면
">", "=" : n >= m
"<", "=" : n <= m
">", "!" : n > m
"<", "!" : n < m
두 문자열 ineq와 eq가 주어집니다.
ineq는 "<"와 ">"중 하나고, eq는 "="와 "!"중 하나입니다.
그리고 두 정수 n과 m이 주어질 때, n과 m이 ineq와 eq의 조건에 맞으면 1을
아니면 0을 return하도록 solution 함수를 완성해주세요.
My answer was
function solution(ineq, eq, n, m) {
if(ineq === ">" && eq === "=") return +(n >= m)
else if(ineq === "<" && eq === "=") return +(n <= m)
else if(ineq === ">" && eq === "!") return +(n > m)
else if(ineq === "<" && eq === "!") return +(n < m)
}
Best answer was
const operations = {
'>=': (n, m) => n >= m,
'<=': (n, m) => n <= m,
'>!': (n, m) => n > m,
'<!': (n, m) => n < m,
};
function solution(ineq, eq, n, m) {
const op = operations[ineq + eq];
return Number(op(n, m));
}
가독성이 매우 좋아졌다.