본문 바로가기
Programming/Algorithm(ACM Problems)

[백준] 2476번 : 주사위 게임 / [자바] JAVA / 학습기록

by jongmln_ 2022. 1. 20.

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

 

2476번: 주사위 게임

첫째 줄에는 참여하는 사람 수 N이 주어지고 그 다음 줄부터 N개의 줄에 사람들이 주사위를 던진 3개의 눈이 빈칸을 사이에 두고 각각 주어진다. 

www.acmicpc.net


[백준] 2476번 주사위 게임 문제
[백준] 2476번 주사위 게임 입출력예제


[전체 코드]

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

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt(); //테스트케이스를 받을 변수 N

		int[] num = new int[3]; //주사위 눈을 담을 int형 배열 num
		int[] prize = new int[N]; //상금을 담을 int형 배열 prize
		int index = 0; //반복문 인덱스
		
		while(index < N) { //테스트케이스만큼 반복
			for(int i=0;i<3;i++) { //주사위눈은 3개씩 입력되기 때문에 반복하며 입력
				num[i] = sc.nextInt();
			}
			Arrays.sort(num); //입력받은 3개의 눈 오름차순 정렬
			prize[index] = choosePrize(num[0],num[1],num[2]); //함수 호출(주사위 눈 3개 인수로 대입)
			//리턴된 상금값 prize 변수에 저장
			
			index++; //인덱스 1 추가
			
		}
		Arrays.sort(prize); //prize값 배열에 모두 저장되었다면 오름차순 정렬
		System.out.println(prize[N-1]); //오름차순이기 때문에 젤 마지막에 있는 값이 가장 큰 값이다.
		// 따라서 가장 큰 상금값이 출력된다.
	}
	public static int choosePrize(int X, int Y, int Z) { //3개의 주사위눈 인자로 대입
		int count = 0; //몇개가 같은지 셀 카운트 변수

		if(Y == X) { //현재 인자값들이 정렬되어 있기 때문에 중간 값을 기준으로 양쪽으로 비교해준다.
			count++; //첫번째 두번째가 같다면 카운트 +1
		}
		if(Y == Z) {
			count++; //두번째 세번째가 같다면 카운트 +1
		}
		//카운트가 0이면 다 다른 인자
		//카운트가 1이면 인자 2개는 같음
		//카운트가 2이면 모두 같음
		//그에 맞게 상금값 리턴
		if(count == 0) {
			return 100*Z;
		}
		else if(count == 1) {
			return 1000 + (Y*100);
		}
		else {
			return 10000 + (Y*1000);
		}


	}
	
}

[제출 결과]

제출 결과


요번문제는 세 주사위 눈 값을 잘비교할 수 있다면 쉬운문제다. 비교하기 위해서 배열 정렬 함수를 이용했다.

위 제출결과를 보면 한번 틀렸는데 입력예제를 보고 테스트케이스를 3번으로 단정짓고 정답을 prize[2]로 제출했다가

틀렸다. 문제는 꼭 잘읽어보자 종민아.