문제 설명
정수가 담긴 리스트 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 값이 출력됨을 활용하기
'자료구조, 알고리즘' 카테고리의 다른 글
프로그래머스 코딩테스트 연습 [주사위 게임2] (0) | 2025.02.27 |
---|---|
프로그래머스 코딩테스트 연습 [등차수열의 특정한 항만 더하기] (0) | 2025.02.25 |
프로그래머스 코딩테스트 연습 [코드 처리하기] (0) | 2025.02.25 |
프로그래머스 코딩테스트 연습 [flag에 따라 다른 값 반환하기] (0) | 2025.02.21 |
프로그래머스 코딩테스트 연습 [조건 문자열] (0) | 2025.02.21 |