코딩 생활/코딩테스트
[프로그래머스 | JS] 레벨 0. 원소들의 곱과 합
everyhahaha
2023. 4. 24. 11:15
반응형
❓ 문제: 원소들의 곱과 합
정수가 담긴 리스트 num_list가 주어질 때, 모든 원소들의 곱이 모든 원소들의 합의 제곱보다 작으면
1을 크면 0을 return하도록 solution 함수를 완성해주세요.
📝 문제 풀이
num_list 배열의 원소들의 합의 제곱값을 ** 로 할지 Math.pow()로 할지 고민하다가
메서드보단 단순계산이 더 빠르겠다싶어서 변수에 넣어서 값을 리턴했다.
function solution(num_list) {
let sum = num_list.reduce((a, b) => a + b);
const multiple = num_list.reduce((a, b) => a * b);
return multiple < sum * sum ? 1 : 0;
}
지금 생각해보면 변수에 넣으면 어차피 저장공간을 차지하기 때문에 return 문에서 바로 **2해줬으면 됐을텐데...
그래도 더 나은 방법을 찾는 이런 과정이 재밌다.
참고할만한 다른 풀이를 구경해봤다.
const solution=n=>+(n.reduce((a,v)=>a+v)**2>n.reduce((a,v)=>a*v))
아니 근데 삼항연산자로 1이나 0을 리턴하지 않는데 어떻게 통과된걸까 살펴보다가
불리언값을 숫자로 변환시켜서 반환하고 있다.
진짜 천재.....리스펙....
위 코드를 삼항연산자로 바꾸면 속도에 차이가 있는지 궁금해서 테스트해봤다.
근소하지만 숫자로 변환하는게 더 빠르다니,
그냥 조건문보다는 삼항연산자가 빨라서 애용했는데 앞으로 풀이에 참고해야겠다.
최근 프로그래머스에 새로운 레벨 0 문제가 생겨서 즐겁게 풀었는데
덕분에 등수도 많이 올랐다.
그래도 레벨 0은 아무래도 단순한 문제가 많다보니
실력보단 트릭이 쌓이는 느낌이다.
이제 다른 레벨로 넘어가봐야겠다.
모두 즐코하세요-!
반응형