https://www.acmicpc.net/problem/2480
문제
1에서부터 6까지의 눈을 가진 3개의 주사위를 던져서 다음과 같은 규칙에 따라 상금을 받는 게임이 있다.
- 같은 눈이 3개가 나오면 10,000원+(같은 눈)×1,000원의 상금을 받게 된다.
- 같은 눈이 2개만 나오는 경우에는 1,000원+(같은 눈)×100원의 상금을 받게 된다.
- 모두 다른 눈이 나오는 경우에는 (그 중 가장 큰 눈)×100원의 상금을 받게 된다.
예를 들어, 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원을 상금으로 받게 된다.
3개 주사위의 나온 눈이 주어질 때, 상금을 계산하는 프로그램을 작성 하시오.
풀이
주사위의 눈금에 따라 상금을 계산하는 문제이다.
Scanner 클래스를 이용한 방법, BufferedReader 클래스를 이용한 방법으로 풀어 보았다.
Scanner 클래스를 이용한 코드의 max 함수는 Math.max 메서드로 대체할 수 있기 때문에, BufferedReader 클래스를 이용한 코드에는 max 함수를 작성하지 않았다.
또한, 조건문의 순서를 바꾸어 코드를 조금 더 간단하게 만들어 보았다.
코드
Scanner 클래스를 이용한 코드
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int Dice1 = scanner.nextInt();
int Dice2 = scanner.nextInt();
int Dice3 = scanner.nextInt();
int reward;
if (Dice1 != Dice2 && Dice2 != Dice3 && Dice3 != Dice1) {
reward = max(Dice1, Dice2, Dice3) * 100;
}
else if (Dice1 == Dice2 && Dice2 == Dice3) {
reward = Dice1 * 1000 + 10000;
}
else {
if(Dice1 == Dice2) {
reward = Dice1 * 100 + 1000;
}
else if(Dice2 == Dice3) {
reward = Dice2 * 100 + 1000;
}
else {
reward = Dice3 * 100 + 1000;
}
}
System.out.println(reward);
}
static int max(int a, int b, int c) {
if (a > b && a > c) {
return a;
} else if (b > a && b > c) {
return b;
} else
return c;
}
}
BufferedReader 클래스와 StringBuilder 클래스를 이용한 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
st = new StringTokenizer(br.readLine());
int Dice1 = Integer.parseInt(st.nextToken());
int Dice2 = Integer.parseInt(st.nextToken());
int Dice3 = Integer.parseInt(st.nextToken());
if(Dice1 == Dice2 && Dice2 == Dice3) System.out.println(10000 + Dice1 * 1000);
else if(Dice1 == Dice2) System.out.println(1000 + Dice1 * 100);
else if(Dice2 == Dice3) System.out.println(1000 + Dice2 * 100);
else if(Dice3 == Dice1) System.out.println(1000 + Dice3 * 100);
else System.out.println(Math.max(Dice1, Math.max(Dice2, Dice3)) * 100);
}
}
틀린 부분이 있다면 정정해 주시면 감사하겠습니다.
궁금한 부분이 있거나, 다른 아이디어가 있으시면 자유롭게 댓글 남겨주세요!
728x90
'[JAVA]백준 알고리즘 > 단계별 - 조건문' 카테고리의 다른 글
[JAVA]백준 알고리즘 2525번 : 오븐 시계 (0) | 2023.09.05 |
---|---|
[JAVA]백준 알고리즘 2884번 : 알람 시계 (0) | 2023.08.30 |
[JAVA]백준 알고리즘 14681번 : 사분면 고르기 (0) | 2023.08.10 |
[JAVA]백준 알고리즘 2753번 : 윤년 (0) | 2023.07.18 |
[JAVA]백준 알고리즘 9498번 : 시험 성적 (0) | 2023.07.18 |