https://www.acmicpc.net/problem/2480
문제를 풀 때 중요한 건 세 개의 변수 비교를 잘 생각해야 된다.
먼저 3개의 변수가 모두 다른 경우부터 생각해 보자
//주사위 숫자가 모두 다른 경우
if(a!=b && b!=c && a!==c){
}
//한 쌍이라도 서로 같은 숫자가 있는 경우
else{
}
그리고 문제에서
모두 다른 눈이 나오는 경우에는 (그중 가장 큰 눈) X100원의 상금을 받게 된다고 쓰여있기 때문에
3개의 다른 숫자 중에서 가장 큰 숫자를 찾아야 된다.
a와 b에서 큰 숫자를 확인한 후 큰 숫자를 c랑 비교하면 된다.
//주사위 숫자가 모두 다른 경우
if(a!=b && b!=c && a!==c){
int max;
// a > b 인 경우
if(a > b){
//c > a > b 이면
if(c > a){
max = c;
}
// a > (b, c) 이면
else {
max = a;
}
}
// b > a 인 경우
else {
// c > b > a 이면
if(c > b){
max = c;
}
// b > (a,c) 이면
else{
max = b;
}
}
System.out.println(max * 100)
}
위 처럼 해주면 3가지의 숫자가 모두 다를 때 경우의 수를 모두 완성한다.
두 번째로
적어도 같은 변수가 한 묶음 이상 존재할 때도 고려해야 한다
방법으로는
a와 b,. c 모두가 같은지 비교해보고 모두 같으면 문제에 제시된 조건처럼 10000+주사위 눈 X1000을 하면 되고
아닐 경우엔 한 묶음이 같다는 것이니 같은 수를 찾으면 된다.
한 묶음만 같은 경우인 조건은
a를 기준으로 b와 같거나 c와 같은 경우를 판다 하면 된다
a==b || a==c 이런 식으로 할 수 있다.
이와 반대로 조건이 모두 안 맞으면 유일하게 b==c인 게 된다.
//주사위 숫자가 모두 다른 경우
if(a!=b && b!=c && a!==c){
//중략
}
//적어도 한 쌍 이상의 서로 같은 숫자가 존재할 경우
else{
//3개의 숫자가 모두 같은 경우
if(a==b && a==c){
}else{
//a가 b또는 c랑 같은 경우
if(a==b || a==c){
}
//b가 c랑 같은 경우
else{
}
}
}
문제에 맞춰서 코드를 짜면 아래와 같다.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
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 = new StringTokenizer(br.readLine(), " ");
int a, b, c;
a = Integer.parseInt(st.nextToken());
b = Integer.parseInt(st.nextToken());
c = Integer.parseInt(st.nextToken());
// 만약 모든 변수가 다른 경우
if (a != b && b != c && a != c) {
int max;
// 만약 a > b 라면
if (a > b) {
// c > a > b 라면
if (c > a) {
max = c;
}
// a > (b, c)
else {
max = a;
}
}
// b > a 라면
else {
// c > b > a 라면
if (c > b) {
max = c;
}
// b > (a, c)
else {
max = b;
}
}
System.out.println(max * 100);
}
// 적어도 한 쌍 이상의 서로 같은 변수가 존재할 경우
else {
// 3개의 변수가 모두 같은 경우
if (a == b && a == c) {
System.out.println(10000 + a * 1000);
}
else {
// a가 b혹은 c랑만 같은 경우
if(a == b || a == c) {
System.out.println(1000 + a * 100);
}
// b가 c랑 같은 경우
else {
System.out.println(1000 + b * 100);
}
}
}
}
}
'study > algorithm' 카테고리의 다른 글
[알고리즘] 별 찍기2 - 백준 2439번 (0) | 2024.06.18 |
---|---|
[알고리즘] 별 찍기1 - 백준 2438번 (0) | 2024.06.18 |
[알고리즘] 오븐 시계 - 백준 2525번 (0) | 2024.06.14 |
[알고리즘] 알람 시계 - 백준 2884번 (0) | 2024.06.14 |
[알고리즘] 윤년 - 백준 2753번 (0) | 2024.06.14 |