[코딩테스트] 32. 주사위 게임2

편준민's avatar
Apr 18, 2025
[코딩테스트] 32. 주사위 게임2

문제

💡
1부터 6까지 숫자가 적힌 주사위가 세 개 있습니다. 세 주사위를 굴렸을 때 나온 숫자를 각각 abc라고 했을 때 얻는 점수는 다음과 같습니다.
  • 세 숫자가 모두 다르다면 a + b + c 점을 얻습니다.
  • 세 숫자 중 어느 두 숫자는 같고 나머지 다른 숫자는 다르다면 (a + b + c) × (a ^2b^2 + c^2 )점을 얻습니다.
  • 세 숫자가 모두 같다면 (a + b + c) × (a^2 + b^2 + c^2 ) × (a^3 + b^3 + c^3 )점을 얻습니다.
세 정수 abc가 매개변수로 주어질 때, 얻는 점수를 return 하는 solution 함수를 작성해 주세요.

제한사항

abc는 1이상 6이하의 정수입니다.

예시

notion image

풀이

한번에 모든 로직을 짜기 어렵기 때문에 먼저 세 숫자가 다를 때의 로직을 먼저 만들었다.
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)); }
둘 다 동일하게 정답
notion image
Share article

YunSeolAn