본문 바로가기

알고리즘/백준

[백준 알고리즘 자바] 2480 : 주사위 세개

https://www.acmicpc.net/problem/2480

 

2480번: 주사위 세개

1에서부터 6까지의 눈을 가진 3개의 주사위를 던져서 다음과 같은 규칙에 따라 상금을 받는 게임이 있다.  같은 눈이 3개가 나오면 10,000원+(같은 눈)×1,000원의 상금을 받게 된다.  같은 눈이 2개

www.acmicpc.net


문제

  • 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개 주사위의 나온 눈이 주어질 때, 상금을 계산하는 프로그램을 작성 하시오.

입력

  • 첫째 줄에 3개의 눈이 빈칸을 사이에 두고 각각 주어진다.

출력

  • 첫째 줄에 게임의 상금을 출력 한다.

입출력 예제


풀이방식설계

1. if - else 문을 통해 각 조건에 맞는 식을 작성한다.

 

2결과를 출력한다.


풀이과정

1. 3 가지의 숫자가 전부 다른 경우에 해당하는 조건과 식을 작성한다.

  • (A != B && B != C && A != C) 조건으로 3 숫자가 전부 다른 경우를 작성한다.
  • Math.max() 를 사용해서 가장 큰 숫자를 찾는다.
  • 가장 큰 숫자(max)에 100을 곱해서 결과 변수(cash)에 저장한다.

2. 3 가지의 숫자가 모두 같을 경우에 해당하는 조건과 식을 작성한다.

  • (A == B && A == C) 조건으로 3 숫자가 모두 같은 경우를 작성한다.
  • 이 경우에 해당하는 식인 10000 + (A * 1000) 를 cash에 저장한다.

3. 2 가지의 숫자가 같을 경우에 해당하는 조건과 식을 작성한다. 단, A와 B 가 같을 경우와 A와 C가 같을 경우를 나누어서 작성한다.

  • (A == B || A == C) 와 남은 조건은 else 문을 통해 작성한다.
  • 이 경우에 해당하는 식인 1000 + (A * 100) 를 cash에 저장한다.

4. 결과를 출력한다.


답안소스

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
	static int cash;
	
	public int Winner(int A, int B, int C) {
		cash = 0;
		
		if(A != B && B != C && A != C) {
			int max = Math.max(A, Math.max(B, C));
			cash = max * 100;
		}else if(A == B && A == C) {
			cash = 10000 + (A * 1000);
		}else if(A == B || A == C) {
			cash = 1000 + (A * 100); 
		}else {
			cash = 1000 + (B * 100);
		}
		return cash;
	}
	
	public static void main(String[] args) throws IOException {
		Main dice = new Main();
		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());
		
		dice.Winner(A, B, C);
		System.out.println(cash);
	}
}