연습장

24. 원소들의 곱과 합 본문

프로그래머스/0단계

24. 원소들의 곱과 합

js0616 2023. 6. 19. 22:02

Q. 정수가 담긴 리스트 num_list가 주어질 때, 모든 원소들의 곱이 모든 원소들의 합의 제곱보다 작으면 1을 크면 0을 return하도록 solution 함수를 완성해주세요.

 

제한사항

2 ≤ num_list의 길이 ≤ 10
1 ≤ num_list의 원소 ≤ 9


1. 모든 원소의 곱이 // for 문으로 각각 가져와서 곱 할 수 있다. 

2. 모든 원소들의  합의 제곱  // for 문으로 각각 가져와서 더하고 for 문 종료후 제곱 

작으면 1 크면 0  // if 문 , 삼항연산자로 위의 둘을 비교

 

num1 // 배열 원소들의 곱

num2 // 배열 원소들의 합 의 제곱


function solution(num_list) {
    let num1 = 1;
    let num2 = 0;
    for (let i = 0 ; i < num_list.length; i++){
        num1 = num1 * num_list[i];
        num2 += num_list[i];
    }
    return num1 < (num2)**2 ? 1 : 0 ; 
}

 


배열을 반복하기 때문에 -> forEach 도 가능

 

function solution(num_list) {
    let num1 = 1;
    let num2 = 0;
    num_list.forEach((x,i) => {
        num1 *= num_list[i]
        num2 += num_list[i]
    })
    return num1 < (num2)**2 ? 1 : 0 ; 
}


다른사람 풀이

function solution(num_list) {
    let accMul = 1
    let accSum = 0
    for (const num of num_list) {
        accMul *= num
        accSum += num
    }
    return accMul < accSum ** 2 ? 1 : 0
}

 

내가 푼것과 유사한데 

한가지 다른점이 있어서 가져왔다.

 

for( const num of num_list ) 인데 

배열에서 하나씩 가져온것을 num 에 저장하는거 같다

마치 파이썬의  for i in my_list  와 비슷한것같다.  

 


for ( let x of array ) { ~~~ }

 

for (배열의 원소 of 배열 ) { 반복 명령 } 

 

다만, map이나 forEach 처럼 index를 가져오지 못한다.

index가 필요한 경우라면 다른 메서드를 활용해야만 한다.

 

map과 forEach 메서드의 경우에는 반복 횟수가 시작할 때 미리 정해져있지만

for.. of문에서는 매 반복 때 마다 배열의 상태가 업데이트된다.

만약 반복명령 중 배열의 원소의 개수가 늘어나면, 반복횟수도 함께 늘어난다.

 

reference

https://bigtop.tistory.com/59

 

'프로그래머스 > 0단계' 카테고리의 다른 글

26. 마지막 두 원소  (0) 2023.06.19
25. 이어 붙인 수  (0) 2023.06.19
23. 주사위 게임 2  (0) 2023.06.19
22. 등차수열의 특정한 항만 더하기  (0) 2023.06.19
21. 코드 처리하기  (0) 2023.06.19