본문 바로가기
알고리즘 풀이

[백준]2480번:주사위 세개 - java 풀이

by 코디드 2023. 3. 29.

 

경우의 수 전부 나열

 

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 = new StringTokenizer(br.readLine(), " ");
		
		int A = Integer.parseInt(st.nextToken());
		int B = Integer.parseInt(st.nextToken());
		int C = Integer.parseInt(st.nextToken());
		
		int prize = 0;
		if(A==B && B==C) {
			prize = 10000+A*1000;
		}else if((A==B && A!=C) || (A==C && A!=B) || (B==C && B!=A)) {
			if(A==B) {
				prize = 1000+A*100;
			}else if(B==C) {
				prize = 1000+B*100;
			}else if(C==A) {
				prize = 1000+C*100;
			}
		}else if(A!=B && B!=C){
			if(A>B && A>C) {
				prize = A*100;
			}else if(B>A && B>C) {
				prize = B*100;
			}else if(C>A && C>B) {
				prize = C*100;
			}
		}
		System.out.println(prize);
	}
}

 

세 개의 수가 전부 같을 때, 두 개만 같을 때, 전부 다를 때로 각각 나눠서 조건문을 전부 나열해 준다.

다른 블로그들을 보니 다른 방법의 풀이도 있는데 이렇게 푸는게 더 간단한 것 같다.

 

 

 

                  }else if((A==B && A!=C) || (A==C && A!=B) || (B==C && B!=A)) {
			int max=0;
			if(A==B) {
				max = A;
			}else if(B==C) {
				max = B;
			}else if(C==A) {
				max = C;
			}
                        prize = 1000+max*100;
                   }else if(A!=B && B!=C){
            	        int max=0;
                        if(A>B && A>C) {
                            max = A;
                        }else if(B>A && B>C) {
                            max = B;
                        }else if(C>A && C>B) {
                            max = C;
                        }
                        prize = max*100;
                    }

 

사실 뒤에 두개의 else if 문의 경우 최댓값을 따로 int max=0; 으로 정의해주고 풀이하면

prize = 1000+max*100; 그리고  prize = max*100; 을 각각 한번만 써주면 된다.

 

 

 

 

 

 

Arrays.sort() 이용한 풀이

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
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 = Integer.parseInt(st.nextToken());
		int B = Integer.parseInt(st.nextToken());
		int C = Integer.parseInt(st.nextToken());
		
		int[] diceInt = {A,B,C};
		
		Arrays.sort(diceInt);
		
		int a = diceInt[0];
		int b = diceInt[1];
		int c = diceInt[2];
		
		int prize = 0;
		if(a==b && b==c) {
			prize = 10000+a*1000;
		}else if((a!=b && b==c) ||(a==b && b!=c)) {
			if(b==c) {
				prize = 1000+b*100;
			}else if(a==b) {
				prize = 1000+b*100;
			}
		}else if(a!=b && b!=c) {
			prize = c*100;
		}
		System.out.println(prize);
	}
}

 

주사위를 굴려나온 세 개의 수를 배열에 넣은 다음 Arrays.sort();로  오름차순 정리를 해준다.

이 경우, 세 개의 수 a,b,c는 입력받는 즉시 a<=b<=c 로 설정되기 때문에 훨씬 간단한 풀이가 나온다.