거북이처럼 천천히

알고리즘 (6월 3일) 본문

Algorithm/알고리즘 문제 풀이

알고리즘 (6월 3일)

유로 청년 2022. 6. 3. 22:28

1. 문제 (백준, 2480, 주사위 세계)

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

 

2480번: 주사위 세개

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

www.acmicpc.net


2. 생각

1에서부터 6까지의 눈을 가진 3개의 주사위를 던져서 다음과 같은 규칙에 따라 상금을 받는 게임이 있다.

  1. 같은 눈이 3개가 나오면 10,000원+(같은 눈)×1,000원의 상금을 받게 된다. 
  2. 같은 눈이 2개만 나오는 경우에는 1,000원+(같은 눈)×100원의 상금을 받게 된다. 
  3. 모두 다른 눈이 나오는 경우에는 (그 중 가장 큰 눈)×100원의 상금을 받게 된다.  

입력받은 3개의 주사위 값을 변수(A,B,C)에 저장하는 동시에 ArrayList를 만들어 리스트에 저장한다.

그리고, if문을 통해 각각의 경우에 대해서 상금(totalReward)를 계산하고, 마지막인 경우(모두 다른 눈이 나온 경우)에는 

저장해 놓은 리스트와 for문을 통해 최대 값을 찾아서 상금(totalReward)를 계산하고자 한다. 


3. 풀이 및 코드 분석

import java.util.Scanner;
import java.util.ArrayList;
import java.util.Arrays;

public class Main{
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		
		int A = scan.nextInt();
		int B = scan.nextInt();
		int C = scan.nextInt();
		ArrayList<Integer> numbers = new ArrayList<>(Arrays.asList(A,B,C));
		int totalReward;
		
		if((1>A || A>6)||(1>B || B>6)||(1>C || C>6)) {
			System.out.println("You entered the wrong numbers.\n");
		}else {
			if((A==B)&&(B==C)) { // 같은 눈이 3개 나온 경우
				totalReward = 10000 + A*1000;
			}else if((A==B)||(A==C)) { // 같은 눈이 2개만 나오는 경우
				totalReward = 1000 + A*100;
			}else if(B==C) { // 같은 눈이 2개만 나오는 경우
				totalReward = 1000 + B*100;
			}else { // 모두 다른 눈이 나오는 경우
				int Max = numbers.get(0);
				for(int i=1; i<3; i++) {
					if(numbers.get(i) > Max) {
						Max = numbers.get(i);
					}
				}
				totalReward = Max*100;
			}
			
			System.out.println(totalReward);
		}
		
	}
}

'Algorithm > 알고리즘 문제 풀이' 카테고리의 다른 글

알고리즘 (6월 7일) - (2)  (0) 2022.06.07
알고리즘 (6월 7일)  (0) 2022.06.07
알고리즘 (6월 6일)  (0) 2022.06.06
알고리즘 (6월 5일)  (0) 2022.06.06
알고리즘(6월 2일)  (0) 2022.06.02