1️⃣ 변수
int answer = 1;- 최종 점수를 저장할 변수
- 곱셈을 해야 하니까 1부터 시작
int count = 1;➡️
count = 몇 단계까지 곱할지를 의미상황 | count 값 |
모두 다름 | 1 |
두 개 같음 | 2 |
세 개 같음 | 3 |
2️⃣ count를 어떻게 정하냐?
🔸 두 수라도 같으면
if(a == b || a == c || b == c) {
count++;
}- 하나라도 같은 게 있으면
count = 2
🔸 세 수가 모두 같으면
if(a == b && b == c) {
count++;
}- 전부 같으면
count = 3
📌 정리
a,b,c 상태 | count |
전부 다름 | 1 |
둘만 같음 | 2 |
전부 같음 | 3 |
3️⃣ 핵심 for문 (여기가 제일 중요)
for(int i = 1; i <= count; i++) {
answer *= (pow(a,i)+pow(b,i)+pow(c,i));
}➡️ i = 1부터 count까지(a^i + b^i + c^i)를 계속 곱해라
✅ case 1: 세 수가 다 다를 때 (count = 1)
i = 1
answer *= (a¹ + b¹ + c¹)➡️ a + b + c
✔ 문제의 1번 규칙과 동일
✅ case 2: 두 수만 같을 때 (count = 2)
i = 1 → (a + b + c)
i = 2 → (a² + b² + c²)➡️ (a + b + c) × (a² + b² + c²)
✔ 문제의 2번 규칙과 동일
✅ case 3: 세 수가 모두 같을 때 (count = 3)
i = 1 → (a + b + c)
i = 2 → (a² + b² + c²)
i = 3 → (a³ + b³ + c³)➡️ (a + b + c) × (a² + b² + c²) × (a³ + b³ + c³)
✔ 문제의 3번 규칙과 동일
4️⃣ pow 함수는 뭐냐?
코드
private int pow(int a, int b) {
if(b == 0) return 1;
return a * pow(a, b-1);
}➡️ a의 b제곱을 구하는 함수
예시
pow(3,2)→ 3 × 3 = 9
pow(4,3)→ 4 × 4 × 4 = 64
(재귀로 만든 직접 구현 버전)
🔹 전체를 한 문장으로 정리
이 코드는“주사위 값이 같은 개수(count)를 구한 뒤, (a+b+c), (a²+b²+c²), (a³+b³+c³)을 count만큼 차례대로 곱해서 점수를 계산한다.”
Share article