728x90
반응형
✅문제설명
✅입출력 예
💡내가 작성한 코드
function solution(a, b, c) {
let one = a+b+c
let two = Math.pow(a,2) + Math.pow(b,2) + Math.pow(c,2)
let three = Math.pow(a,3) + Math.pow(b,3) + Math.pow(c,3)
if(a == b && a == c){
return one*two*three
}else if( a !== b && b !== c && a !== c){
return one
}else if(a == b !== c || a !== b == c || a == c !== b ){
return one*two}
}
내가 작성한 코드 처음에는 if(a == b== c)로 했다가
변수 3가지를 비교하면 undefined가 나와서 오류가 났다.
또 이렇다고 한다!!
그런데 else if(a == b !== c || a !== b == c || a == c !== b ) 이 코드는 왜 동작이 됬는지 궁금해서 질문해보니
이렇다고 한다. 조건문에 3개가 들어가는 경우는 없다고 답변이 왔다!!
그리고 제곱을 표현하는 함수 Math.pow(2,3) 도 새롭게 검색해서 알게되었다. 다르게 표현하는 방식도 있는데 밑에 다른 사람들 풀이를 통해 알 수 있다.
💡다른 사람들 풀이
const solution = (a, b, c) => {
const set = new Set([a, b, c]);
switch ([...set].length) {
case 1: return calculate([a, b, c], 3);
case 2: return calculate([a, b, c], 2);
case 3: return calculate([a, b, c]);
}
};
const calculate = (inc, n=1) => {
const [a, b, c] = inc;
let result = 1;
for (let i = 1; i <= n; i++) {
result *= Math.pow(a, i) + Math.pow(b, i) + Math.pow(c, i)
}
return result;
};
...set은 중복값이 포함이 안되니깐 a,b,c가 다 같다면 배열의 길이가 1이 되고 case1로 가면 for문에서 쓰일 n의 차수가 3까지 필요하니깐 case 1: return calculate([a, b, c], 3); 이 코드가 필요하다. 처음에는 const calculate = (inc, n=1) => 이 코드에서 n=1이 지정되어 있어서 헷갈려는데 n에 다른 값을 집어넣으면 그 값으로 바뀔 수 있다.
function solution(a, b, c) {
let sum1 = a + b + c;
let sum2 = a * a + b * b + c * c;
let sum3 = a ** 3 + b**3 + c**3;
if (a === b && b === c)
return sum1*sum2*sum3;
else if (a === b || a === c || b === c)
return sum1*sum2;
else
return sum1;
}
이 풀이가 너무 좋았던 것은 이미 첫번째 조건문에서 세 숫자가 같은 경우 걸러지니깐 두번째 조건문에서는 세 숫자가 같을 경우는 없음으로 조건식이 훨씬 간략해진다는 것이 그리고 마지막은 세 숫자가 다 다를경우밖에 남지 않는다. 정말 좋은 코드인 것 같다...
💡문제를 풀며 새로 습득한 지식
- Math.pow(a, i) 이 함수는 a의 i제곱을 의미한다!
거듭제곱의 표현
console.log(3 ** 4);
// Expected output: 81
console.log(10 ** -2);
// Expected output: 0.01
console.log(2 ** (3 ** 2));
// Expected output: 512
console.log((2 ** 3) ** 2);
// Expected output: 64
요렇게도 표현할 수 있었다.
728x90
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
부족한 금액 계산하기 (0) | 2023.11.13 |
---|---|
원소들의 곱과 합 (0) | 2023.11.07 |
등차수열의 특정한 항만 더하기 - reduce() (0) | 2023.11.05 |
코드 처리하기 (1) | 2023.11.03 |
추억 점수 (0) | 2023.10.24 |