
내가 생각했을때 문제에서 원하는부분
1부터 6까지 숫자가 적힌 주사위가 세 개 있습니다. 세 주사위를 굴렸을 때 나온 숫자를 각각 a, b, c라고 했을 때 얻는 점수는 다음과 같습니다.
세 숫자가 모두 다르다면 a + b + c 점을 얻습니다.
세 숫자 중 어느 두 숫자는 같고 나머지 다른 숫자는 다르다면 (a + b + c) × (a2 + b2 + c2 )점을 얻습니다.
세 숫자가 모두 같다면 (a + b + c) × (a2 + b2 + c2 ) × (a3 + b3 + c3 )점을 얻습니다.
세 정수 a, b, c가 매개변수로 주어질 때, 얻는 점수를 return 하는 solution 함수를 작성해 주세요.
내가 이 문제를 보고 생각해본 부분
solution 메서드는 세 주사위 눈금 a, b, c를 입력으로 받는다.
먼저 세 숫자의 합을 sum에 저장한다. 그리고 각 숫자의 제곱의 합을 sumSquared에 저장한다.
첫 번째 조건문은 세 숫자가 모두 같은지 확인한다.
모두 같으면 세 숫자의 세제곱 합을 구해 sumCubed에 저장하며, 점수는 sum × sumSquared × sumCubed로 계산해 반환한다.
두 번째 조건문은 세 숫자 중 두 개가 같고 나머지 하나가 다른 경우로 반응한다.
이때 점수는 sum × sumSquared로 계산해 반환한다.
마지막으로 세 숫자가 모두 다를 경우에는 단순히 세 숫자의 합인 sum을 반환하도록 한다.
코드로 구현
class Solution {
public int solution(int a, int b, int c) {
int sum = a + b + c;
int sumSquared = a * a + b * b + c * c;
if (a == b && b == c) {
int sumCubed = a * a * a + b * b * b + c * c * c;
return sum * sumSquared * sumCubed;
} else if (a == b || b == c || a == c) {
return sum * sumSquared;
} else {
return sum;
}
}
}
프로그래머스 코드
package programmers;
// 프로그래머스 주사위 게임 2
public class Main15 {
public static int solution(int a, int b, int c) {
int sum = a + b + c;
int sumSquared = a * a + b * b + c * c;
if (a == b && b == c) {
int sumCubed = a * a * a + b * b * b + c * c * c;
return sum * sumSquared * sumCubed;
} else if (a == b || b == c || a == c) {
return sum * sumSquared;
} else {
return sum;
}
}
public static void main(String[] args) {
// 예제 테스트: 2, 6, 1 => 결과 9
System.out.println(solution(2, 6, 1));
// 예제 테스트: 5, 3, 3 => 결과 473
System.out.println(solution(5, 3, 3));
// 예제 테스트: 4, 4, 4 => 결과 110592
System.out.println(solution(4, 4, 4));
}
}
위에 있는 코드를 변경한 코드
코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.