1부터 6까지 숫자가 적힌 주사위가 세 개 있습니다. 세 주사위를 굴렸을 때 나온 숫자를 각각 a
, b
, c
라고 했을 때 얻는 점수는 다음과 같습니다.
a
+ b
+ c
점을 얻습니다.a
+ b
+ c
) × (a
^2 + b
^2 + c
^2 )점을 얻습니다.a
+ b
+ c
) × (a
^2 + b
^2 + c
^2 ) × (a
^3 + b
^3 + c
^3 )점을 얻습니다.a
, b
, c
가 매개변수로 주어질 때, 얻는 점수를 return 하는 solution 함수를 작성해 주세요.a
, b
, c
는 1이상 6이하의 정수입니다.a | b | c | result |
---|---|---|---|
2 | 6 | 1 | 9 |
5 | 3 | 3 | 473 |
4 | 4 | 4 | 110592 |
입출력 예 설명
입출력 예 #1
입출력 예 #2
입출력 예 #3
def solution(a, b, c): answer = a + b + c if a == b or a == c or b == c: answer = answer * (a**2 + b**2 + c**2) if a == b and a == c: answer = answer * (a**3+b**3+c**3) return answer
코드 간단 소개
- 먼저 a, b, c를 더하는 것은 모두 동일하기 때문에 더해서 answer에 넣는다.
- if문으로 2개의 숫자가 같은지 확인한다.
- 2개의 숫자가 같다면 answer에 answer곱하기 (a제곱, b제곱, c제곱을 더한 것)을 한다.
- 2개가 같은 상태에서 3개가 동일한지 확인한다.
- 3개가 같다면 앞에 계산한 answer에 각각 3제곱한 것을 곱한다.
def solution(a, b, c): check=len(set([a,b,c])) if check==1: return 3*a*3*(a**2)*3*(a**3) elif check==2: return (a+b+c)*(a**2+b**2+c**2) else: return (a+b+c)
- set([a,b,c])를 한다.
- set()안에 있는 것이 중복이면 하나만 남는다.
- 그래서 set()을 한 후 len()으로 길이를 구하면 3개 중복일 땐 check = 1, 2개 중복일땐 check = 2, 중복이 없으면 check = 3이 된다.
- check값이 1은 3개가 중복이기 때문에 a에 해당하는 것을 3개 곱하고 a를 제곱한 것을 3으로 곱하고, a를 세제곱한 것을 3개 곱하여 모두 곱한다.
- check값이 2이면 2개가 중복이므로,
(a+b+c) * (a**2 + b**2 + c**2)
를 한 것을 return한다.- check값이 3이면 a+b+c를 return한다.