
내가 생각했을때 문제에서 원하는부분
1부터 6까지 숫자가 적힌 주사위가 두 개 있습니다.
두 주사위를 굴렸을 때 나온 숫자를 각각 a, b라고 했을 때 얻는 점수는 다음과 같습니다.
a와 b가 모두 홀수라면 a2 + b2 점을 얻습니다.
a와 b 중 하나만 홀수라면 2 × (a + b) 점을 얻습니다.
a와 b 모두 홀수가 아니라면 |a - b| 점을 얻습니다.
두 정수 a와 b가 매개변수로 주어질 때, 얻는 점수를 return 하는 solution 함수를 작성해 주세요.
내가 이 문제를 보고 생각해본 부분
solution 메서드에 두 개의 정수 a, b를 입력받는다.
먼저 a와 b가 홀수인지 판단하기 위해 각각 (a % 2 == 1), (b % 2 == 1) 조건을 평가하여 isAOdd, isBOdd라는 불리언 변수에 저장한다.
만약 a와 b가 모두 홀수(isAOdd && isBOdd)라면, 점수로 a * a + b * b 즉, 두 수의 제곱 합을 반환한다.
그렇지 않고 둘 중 하나만 홀수(isAOdd || isBOdd)라면, 점수는 2 * (a + b) 즉, 두 수 합의 두 배를 반환한다.
그 외의 경우, 즉 두 수 모두 홀수가 아닐 때는 Math.abs(a - b)를 사용해 두 수의 차이 절댓값을 점수로 반환한다.
main 메서드에서는 이 solution 메서드를 호출하는 객체 Main106를 생성하고, 세 가지 테스트 케이스를 입력하여 결과를 출력한다.
각각의 출력은 주어진 조건에 따라 정상적으로 계산된 점수를 보여 준다.
예를 들면 3과 5는 둘 다 홀수여서 34, 6과 1은 하나만 홀수여서 14, 2와 4는 둘 다 홀수가 아니므로 2가 출력된다.
코드로 구현
class Solution {
public int solution(int a, int b) {
int answer = 0;
boolean isAOdd = (a % 2 == 1);
boolean isBOdd = (b % 2 == 1);
if (isAOdd && isBOdd) {
answer = a * a + b * b;
} else if (isAOdd || isBOdd) {
answer = 2 * (a + b);
} else {
answer = Math.abs(a - b);
}
return answer;
}
}
프로그래머스 코드
package programmers.programmers2;
// 프로그래머스 주사위 게임 1
public class Main106 {
public int solution(int a, int b) {
int answer = 0;
boolean isAOdd = (a % 2 == 1);
boolean isBOdd = (b % 2 == 1);
if (isAOdd && isBOdd) {
answer = a * a + b * b;
} else if (isAOdd || isBOdd) {
answer = 2 * (a + b);
} else {
answer = Math.abs(a - b);
}
return answer;
}
public static void main(String[] args) {
Main106 sol = new Main106();
// 테스트 예시
System.out.println(sol.solution(3, 5)); // 34
System.out.println(sol.solution(6, 1)); // 14
System.out.println(sol.solution(2, 4)); // 2
}
}
위에 있는 코드를 변경한 코드
코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.