문제
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이하의 정수입니다.예시

풀이
한번에 모든 로직을 짜기 어렵기 때문에 먼저 세 숫자가 다를 때의 로직을 먼저 만들었다.
int a = 4;
int b = 4;
int c = 4;
int answer = 0;
if ( a != b && b != c && c != a ) {
answer = a + b + c;
}
세 숫자 중 2개가 같은 경우도 따로 만들어 보았다.
int a = 4;
int b = 4;
int c = 4;
int answer = 0;
if ( a == b && b != c && c != a ) {
answer = (a + b + c) * ((a*a) + (b*b) + (c*c));
} else if ( a != b && b == c && c != a ) {
answer = (a + b + c) * ((a*a) + (b*b) + (c*c));
} else if ( a != b && b != c && c == a ) {
answer = (a + b + c) * ((a*a) + (b*b) + (c*c));
}
세 숫자가 모두 같을 때도 따로 만들었다.
int a = 4;
int b = 4;
int c = 4;
int answer = 0;
if ( a == b && b == c && c == a ) {
answer = (a + b + c) * ((a * a) + (b * b) + (c * c)) * ((a * a * a) + (b * b * b) + (c * c * c));
}
이후에 3가지 경우를 모두 else if 로 합쳤다.
int a = 4;
int b = 4;
int c = 4;
int answer = 0;
if ( a != b && b != c && c != a ) {
answer = a + b + c;
} else if ( a == b && b != c && c != a ) {
answer = (a + b + c) * ((a*a) + (b*b) + (c*c));
} else if ( a != b && b == c && c != a ) {
answer = (a + b + c) * ((a*a) + (b*b) + (c*c));
} else if ( a != b && b != c && c == a ) {
answer = (a + b + c) * ((a*a) + (b*b) + (c*c));
} else if ( a == b && b == c && c == a ) {
answer = (a + b + c) * ((a * a) + (b * b) + (c * c)) * ((a * a * a) + (b * b * b) + (c * c * c));
}
코드가 너무 지저분한 것 같아서 검색 결과 세 숫자 중 2개만 같은 경우일 때만 검사 조건이 많기 때문에 2개만 같은 경우를 else if문에 else 에 넣어서 코드를 간략하게 만들었다.
if ( a != b && b != c && c != a ) {
answer = a + b + c;
} else if ( a == b && b == c && c == a ) {
answer = (a + b + c) * ((a * a) + (b * b) + (c * c)) * ((a * a * a) + (b * b * b) + (c * c * c));
} else {
answer = (a + b + c) * ((a*a) + (b*b) + (c*c));
}
둘 다 동일하게 정답

Share article