[프로그래머스] LV0. 원소들의 곱과 합

윤인경·2023년 8월 5일
0

코딩테스트

목록 보기
26/38
post-thumbnail

문제 설명

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

제한사항

  • 2 ≤ um_list 길이 ≤ 10
  • 1 ≤ um_list 원소 ≤ 9

입출력 예

num_listresult
[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):
    mul = 1
    sum1 = 0
    for i in range(len(num_list)):
        mul *= num_list[i]
        sum1 += num_list[i]
        print(mul, sum1)
    if mul > sum1**2:
        answer = 0
    else:
        answer = 1
    return answer

코드 간단 소개

  • mul = 1, sum = 0으로 초기화, 곱할때는 1이 초기값이어야하고, 더할때는 0이 초기값이어야한다.
  • num_list의 길이만큼 for문을 돈다.
  • for문을 돌면서 곱하기와 더하기를 각각 한다.
  • for문을 빠져나와 곱셈을 한 것이 더 많은지 덧셈에 제곱이 더 큰지 if문으로 판단한다.
  • mul이 더 크면 0을 아니면 1을 return한다.

다른 사람 풀이

def solution(num_list):
    s=sum(num_list)**2
    m=eval('*'.join([str(n) for n in num_list]))
    return 1 if s>m else 0
  • sum()함수를 사용하여 num_list에 있는 값들을 모두 더하고 제곱을 한다.
  • eval()함수를 사용하여 곱하기를 한다.
  • eval()안에 식을 문자열로 넣기 위해 ''.join()으로 num_list 값 사이에 을 넣는다.
  • s가 m보다 크면 1을 아니면 0을 return한다.
def solution(num_list):
    mul = 1 
    for n in num_list:
        mul *= n
    return int(mul < sum(num_list) ** 2)
  • mul 을 1로 초기화한다.
  • for 문을 돌며 mul에 num_list에 있는 값을 하나씩 곱한다.
  • mul보다 sum(num_list) ** 2가 크면 True 아니면 False
  • int()로 변환하여 True는 1로 False는 0으로 반환된다.
profile
코딩 공부 및 프로젝트 정리

0개의 댓글