자료구조, 알고리즘

프로그래머스 코딩테스트 연습 [원소들의 곱과 합]

shinetheworld 2025. 2. 27. 15:50

문제 설명

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

 

제한사항

  • 2 <= num_list의 길이 <= 10
  • 1 <= num_list의 원소 <= 9

입출력 예

num_list result
[3, 4, 5, 2, 1] 1
[5, 7, 8, 3] 0

 

입출력 예 설명

입출력 예 #1

  • 모든 원소의 곱은 120, 합의 제곱은 225이므로 1을 return 합니다.

입출력 예 #2

  • 모든 원소의 곱은 840, 합의 제곱은 529이므로 0을 return 합니다.

 

해결

내 풀이

def solution(num_list):
    answer, sum1 = 0
    multi = 1
    
    for i in range(len(num_list)):
        multi *= num_list[i]
        sum1 += num_list[i]
        
    if multi > (sum1**2):
        return int(answer == 1)
    elif multi < (sum1**2):
        return int(answer == 0)
    
    return answer

 

다른 풀이

다른 풀이 #1

def solution(num_list):
    a=1
    b=0
    
    for i in num_list:
    	a*=i
        b+=i
    if a < b*b :
    	return 1
    return 0

 

-> a, b 보다는 명사를 활용하는 게 좋을 것 같다

 

다른 풀이 #2

def solution(num_list):
    mul = 1
    for i in num_list:
    	mul *= i
    return int(mul < sum(num_list) ** 2)

 

부등식 결과 -> boolean 값이 출력됨을 활용

모든 원소들의 합의 제곱은 굳이 변수 정의하지 않고 사용

-> 뭐가 더 나은 건지 모르겠다... 나는 변수 정의가 더 나은 것 같은데

 

 

새로 알게 된 점

  • for i in list -> i 는 list의 각 인덱스 값 인 것을 활용하기
    • ex) for i in [a, b, c] -> 순서대로 i = a, i = b, i = c
  • 부등식 결과 -> boolean 값이 출력됨을 활용하기