https://www.acmicpc.net/problem/2476
2476번: 주사위 게임
첫째 줄에는 참여하는 사람 수 N이 주어지고 그 다음 줄부터 N개의 줄에 사람들이 주사위를 던진 3개의 눈이 빈칸을 사이에 두고 각각 주어진다.
www.acmicpc.net


[전체 코드]
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]로 제출했다가
틀렸다. 문제는 꼭 잘읽어보자 종민아.
'Programming > Algorithm(ACM Problems)' 카테고리의 다른 글
| [백준] 2490번 : 윷놀이 / [자바] JAVA / 학습기록 (0) | 2022.01.20 |
|---|---|
| [백준] 2484번 : 주사위 네개 / [자바] JAVA / 학습기록 (0) | 2022.01.20 |
| [백준] 2475번 : 검증수 / [자바] JAVA / 학습기록 (0) | 2022.01.20 |
| [백준] 2438번 : 별찍기 - 1 / [자바] JAVA (0) | 2022.01.20 |
| [백준] 2420번 : 사파리월드 / [자바] JAVA / 학습기록 (0) | 2022.01.20 |