[코드카타] 길이에 따른 연산

seonyoung·2024년 8월 22일
0

📁 문제

정수가 담긴 리스트 num_list가 주어질 때, 리스트의 길이가 11 이상이면 리스트에 있는 모든 원소의 합을 10 이하이면 모든 원소의 곱을 return하도록 solution 함수를 완성해주세요.

📁 입출력 예

💡 나의 오답

def solution(num_list):
    answer = 0
    
    if len(num_list) >= 11:
        for i in num_list:
            answer += i
    else: 
        for i in num_list:
            answer *= i
    return answer

  • if에서 리스트의 길이 11 이상일 때 리스트에 있는 모든 원소들의 합
  • else에서 10이하면 모든 원소들의 곱을 return하는 코드를 작성함
    → 그러나 첫 번째 테스트만 통과하고 두 번째 테스트는 실패...
    → 무언가 더 추가해야 하는 건가 싶어서 더 시도를 해보았음

💡 나의 정답

def solution(num_list):
    answer = 0
    
    if len(num_list) >= 11:
        for i in num_list:
            answer += i
    else: 
        answer = 1  
        for i in num_list:
            answer *= i
    return answer
  • 뭐가 문제인지 모르겠어서 인터넷에 찾아보니 곱셈을 하기 전에 초기 값을 1로 설정을 하는게 좋다고 함
  • 그래서 for문 시작 전 answer = 1을 추가 함

📌 곱셈의 항등원이란?

  • 수학적으로 곱셈에서 1은 곱하기 연산에 대해 항등원 역할을 함
  • 즉, 1로 초기화한 상태에서 다른 숫자를 곱하면, 결과가 정확하게 계산

💡 다른 사람의 정답

from math import prod
def solution(num_list):
    return (sum(num_list) if len(num_list) > 10 else prod(num_list))
  • math모듈에서 prod함수를 가져오는 것
    prod : 리스트의 모든 원소를 곱한 값을 반환하는 함수
  • return (sum(num_list) if len(num_list) > 10 else prod(num_list))
    len(num_list) > 10 조건이 인 경우, sum(num_list)를 반환
    즉, 리스트의 길이가 11 이상이면 리스트의 원소들의 합을 계산하여 반환
    len(num_list) <= 10 조건이 거짓인 경우, prod(num_list)를 반환
    즉, 리스트의 길이가 10 이하이면 리스트의 원소들을 모두 곱한 값을 계산하여 반환
profile
원하는 바를 이루고 싶은 사람입니다.

0개의 댓글