목차
1. 2024.01.08 - [BackEnd/Java] - [JAVA] 조건문, 반복문을 이용한 문제 풀이 1(윤년 계산기)
2. 2024.01.08 - [BackEnd/Java] - [JAVA] 조건문, 반복문을 이용한 문제 풀이 2(주사위 게임)
3. 2024.01.08 - [BackEnd/Java] - [JAVA] 조건문, 반복문을 이용한 문제 풀이 3(배수 판별기)
4. 2024.01.08 - [BackEnd/Java] - [JAVA] 조건문, 반복문을 이용한 문제 풀이 4(청구 금액 계산기)
5. 2024.01.08 - [BackEnd/Java] - [JAVA] 조건문, 반복문을 이용한 문제 풀이 5(다독왕)
6. 2024.01.08 - [BackEnd/Java] - [JAVA] 조건문, 반복문을 이용한 문제 풀이 6(피보나치 수)
7. 2024.01.08 - [BackEnd/Java] - [JAVA] 조건문, 반복문을 이용한 문제 풀이 7(출입증)
8. 2024.01.08 - [BackEnd/Java] - [JAVA] 조건문, 반복문을 이용한 문제 풀이 8(방정식)
9. 2024.01.08 - [BackEnd/Java] - [JAVA] 조건문, 반복문을 이용한 문제 풀이 9(숫자 맞추기 게임)
10. 2024.01.08 - [BackEnd/Java] - [JAVA] 조건문, 반복문을 이용한 문제 풀이 10(만원의 행복)
11. 2024.01.08 - [BackEnd/Java] - [JAVA] 조건문, 반복문을 이용한 문제 풀이 11(은행)
자바의 조건문, 반복문을 이용한 문제 풀이를 진행해보겠습니다~
문제 2) 주사위 게임
1에서부터 6까지의 눈을 가진 3개의 주사위를 던져서 다음과 같은 규칙에 따라 상금을 받는 게임이 있다.
1. 같은 눈이 3개가 나오면, 10,000원 + (같은 눈) × 1,000원의 상금을 받게 된다.
2. 같은 눈이 2개만 나오는 경우에는 1,000원 + (같은 눈) × 100원의 상금을 받게 된다.
3. 모두 다른 눈이 나오는 경우에는 (가장 큰 눈) × 100원의 상금을 받게 된다.
주사위를 3번 굴려 나온 값을 각각 차례대로 출력하고, 마지막 주사위 값이 출력되면 즉시 상금을 계산하는 프로그램을 작성 하시오.
예시) 3개의 눈 3, 3, 6이 주어지면 상금은 1,000+3×100으로 계산되어 1,300원을 받게 된다.
또 3개의 눈이 2, 2, 2로 주어지면 10,000+2×1,000 으로 계산되어 12,000원을 받게 된다.
3개의 눈이 6, 2, 5로 주어지면 그중 가장 큰 값이 6이므로 6×100으로 계산되어 600원을 상금으로 받게 된다.
참고) 1~6 사이의 랜덤 값 얻기 : (int)(Math.random() * 6 +1)
👉 출력방법
1. 첫 번째 주사위를 굴리시겠습니까? → [enter]
2. 첫 번째 주사위 값 : [숫자]
3. 두 번째 주사위를 굴리시겠습니까? → [enter]
4. 두 번째 주사위 값 : [숫자]
5. 세 번째 주사위를 굴리시겠습니까? → [enter]
6. 세 번째 주사위 값 : [숫자]
7. 총 상금은 [액수]입니다.
👉 문제 풀이를 위한 Flow Chart
![]() |
👉 문제 해답 코드
import java.util.Scanner; public class DiceGame { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.print("첫 번째 주사위를 굴리시겠습니까? "); sc.nextLine(); int num1 = (int)(Math.random()*6)+1; System.out.print("두 번째 주사위를 굴리시겠습니까? "); sc.nextLine(); int num2 = (int)(Math.random()*6)+1; System.out.print("세 번째 주사위를 굴리시겠습니까? "); sc.nextLine(); int num3 = (int)(Math.random()*6)+1; int sum; if(num1 == num2 || num1 == num3 || num2 == num3) { if(num1 == num2 && num1 == num3) { sum = num1 * 1000 + 10000; } else { if(num1 == num2) { sum = num1 * 100 + 1000; } else { sum = num3 * 100 + 1000; } } } else { int max = Math.max(num1, num2); max = Math.max(max, num3); sum = max * 100; } System.out.println("총 상금은 " + sum + "원 입니다."); sc.close(); } }
👉 코드 해설
1. 입력을 위한 java.util의 Scanner 클래스를 가져온다.
2. 인스턴스 생성 후 공백을 입력받고 랜덤으로 주사위를 굴려 각각 변수(3개)에 저장한다.
3. sum 변수를 선언해 최종 획득 상금을 저장한다.
4. 만약 세 개 중 2개가 일치한다면?
4-1) 참이라면, 세 값이 모두 일치하는지 확인한다.
4-1-1) 참이라면, 최종 상금은 (주사위 값) x 1,000 + 10,000원
4-1-2) 거짓이라면, 1번, 2번 주사위가 같은지 확인한다.
4-1-1-1) 참이라면, 최종 상금은 (1번 주사위 값) x 100 + 1,000원
4-1-1-2) 거짓이라면, 최종 상금은 (3번 주사위 값) x 100 + 1,000원
4-2) 거짓이라면, Math.max 함수를 이용해 가장 큰 값을 찾는다. 최종 상금은 (큰 주사위 값) x 100원
5. 총 상금을 출력합니다.
문제 풀이 시, 배열을 배우지 않았다는 가정하에 문제를 풀이했기 때문에 변수 선언과 입력을 3번씩 진행했고, 중복되는 코드가 많이 나온 것을 볼 수 있습니다. Math.ramdom()을 통해 임의의 주사위 값이 나오도록 선언했습니다.
중첩 if문을 사용하여 많은 조건을 주었습니다. 하지만, if문의 조건문에 조건이 너무 많이 있어 조금 아쉽긴합니다!
혹시나 코드를 보고 좀 더 간단하게 풀이하실 수 있는 분들은 답글 부탁드려요!!!!
많은 분들의 피드백은 언제나 환영합니다! 많은 댓글 부탁드려요~~

'BackEnd > Java' 카테고리의 다른 글
[JAVA] 조건문, 반복문을 이용한 문제 풀이 4(청구 금액 계산기) (1) | 2024.01.08 |
---|---|
[JAVA] 조건문, 반복문을 이용한 문제 풀이 3(배수 판별기) (0) | 2024.01.08 |
[JAVA] 조건문, 반복문을 이용한 문제 풀이 1(윤년 계산기) (0) | 2024.01.08 |
Eclipse 단축키 정리 (1) | 2024.01.04 |
[에러 해결 방법] java.lang.ArithmeticException (0) | 2023.08.07 |