<문제 제시>
<예시 입출력>
<문제 해결 과정>
주사위를 BufferedReader로 입력받고 공백을 기준으로 정수형 변수들을 만들어 준 후 연산 하고자 하였다.
주사위 눈이 모두 같은 경우, 한개만 같은 경우, 모두 다른 경우를 and 와 or 연산을 통해 구현하면 된다.
<주사위 눈이 모두 같은 경우>
if(a == b && b == c && a == c) {
result = 10000 + a * 1000;
System.out.println(result);
}
a와 b가 같고 b와 c가 같고 a와 c가 같은 경우를 and연산으로 처리해주었고, result 변수에 상금을 담았다.
<주사위 눈이 한 쌍만 같은 경우>
else if (a == b || b == c || a == c) {
if(a == b) {
result = 1000 + a * 100;
}
else if(b == c) {
result = 1000 + b * 100;
}
else if(a == c) {
result = 1000 + a * 100;
}
System.out.println(result);
}
a와 b가 같거나, b와 c가 같거나, a와 c가 같은 경우를 or연산으로 처리해주었다.
각 경우마다 상금으로 받는 금액이 달라질 수 있기때문에 (= 주사위 눈이 다른 경우일수도 있음) 다른 조건문들을 추가해주어 처리하였다.
<주사위 눈이 모두 다른 경우>
else {
if ((a >= b && a >= c)) {
max = a;
}
else if (b >= a && b >= c) {
max = b;
}
else max = c;
result = max * 100;
System.out.println(result);
}
이번 경우에서는 최대값을 찾아야하므로 max라는 임시 변수를 통해 최대값을 찾아내는 로직이 필요했다.
만약 a가 b보다 크고 c보다도 크다면 최대값은 a가 될것이다.
혹은 b가 a보다 크거나 c보다도 크다면 최대값은 b가 될것이다.
그 외의 경우에는 c가 최대값이 될 것이다.
max를 상금으로 계산하고 출력해주면 된다.
<전체코드>
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] s = br.readLine().split(" ");
int a = Integer.parseInt(s[0]);
int b = Integer.parseInt(s[1]);
int c = Integer.parseInt(s[2]);
int result = 0;
int max = 0;
if(a == b && b == c && a == c) {
result = 10000 + a * 1000;
System.out.println(result);
}
else if (a == b || b == c || a == c) {
if(a == b) {
result = 1000 + a * 100;
}
else if(b == c) {
result = 1000 + b * 100;
}
else if(a == c) {
result = 1000 + a * 100;
}
System.out.println(result);
}
else {
if ((a >= b && a >= c)) {
max = a;
}
else if (b >= a && b >= c) {
max = b;
}
else max = c;
result = max * 100;
System.out.println(result);
}
}
}
위의 3가지 경우를 모두 합치면 조금 길지만 다양한 경우를 처리가능한 조건문을 만들 수 있다.
참고)
https://elukasoul.tistory.com/7
[Java] 정수 세개를 입력받아 가장 큰 수 구하기
NumCompare.java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 package org.elukasoul.numCompare; import java.util.Scanner; public class ..
elukasoul.tistory.com
문제링크)
https://www.acmicpc.net/problem/2480
2480번: 주사위 세개
1에서부터 6까지의 눈을 가진 3개의 주사위를 던져서 다음과 같은 규칙에 따라 상금을 받는 게임이 있다. 같은 눈이 3개가 나오면 10,000원+(같은 눈)×1,000원의 상금을 받게 된다. 같은 눈이 2개
www.acmicpc.net
'Algorithms > 백준' 카테고리의 다른 글
[백준] '골드바흐의 추측' - Java (0) | 2023.05.19 |
---|---|
[백준] '과제 안 내신 분..?' - Java (0) | 2023.05.18 |
[백준] 2525번 '오븐 시계' - Java (0) | 2022.09.04 |
[백준] 2884번 '알람 시계' - Java (0) | 2022.09.03 |
[백준] 2753번 '윤년' - Java (0) | 2022.09.02 |