2480번: 주사위 세개
1에서부터 6까지의 눈을 가진 3개의 주사위를 던져서 다음과 같은 규칙에 따라 상금을 받는 게임이 있다. 같은 눈이 3개가 나오면 10,000원+(같은 눈)×1,000원의 상금을 받게 된다. 같은 눈이 2개
www.acmicpc.net
● 풀이 순서
1. 주사위 3개의 값이 모두 다를 경우 : 그 중에서 가장 큰 값을 찾아내기
if(a != b && b !=c && a != c) { // a, b, c가 모두 다를 경우
int max;
if(a > b) { // a가 b보다 크고
if(c > a) { // c가 a보다 큰 경우
max = c; // c가 가장 큰 값이다
}else { // 그게 아니라 c보다 a가 크다면
max = a; // a가 가장 큰 값이다
}
// 이 자리의 else는 if(a > b)의 else 이므로 a보다 b가 더 크다를 가르킨다
}else {
if(c > b) { // c가 b보다 더 큰 경우
max = c;// c가 가장 큰 값이다
}else { // 그게 아니라 c보다 b가 크다면
max = b; // b가 가장 큰 값이다
}
}
System.out.println(max*100);
// 가장 큰 값을 알 수 있는 식이 나왔으므로 조건에 따라 가장 큰 값에 100을 곱해준다
2. 주사위 3개 중에서 세개의 값이 모두 같은 경우
// 이 자리의 else는 if(a != b && b !=c && a != c)의 else를 가르킨다
}else {
if(a == b && a == c) { // a와 b가 같고 a와 c도 같다 = a, b, c가 같다
System.out.println(10000+(a*1000));
3. 주사위 3개 중에서 두개의 값이 같은 경우
}else {
if(a == b || a == c) { // a와 b가 같거나 또는 a와 c가 같다 = b와 c는 서로 다르다
System.out.println(1000+(a*100));
}else { // b, c가 서로 같다
System.out.println(1000+(b*100));
}
}
}
● 위의 결과를 합친 전체적인 코드
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
int c = sc.nextInt();
if(a != b && b !=c && a != c) {
int max;
if(a > b) {
if(c > a) {
max = c;
}else {
max = a;
}
}else {
if(c > b) {
max = c;
}else {
max = b;
}
}
System.out.println(max*100);
}else {
if(a == b && a == c) {
System.out.println(10000+(a*1000));
}else {
if(a == b || a == c) {
System.out.println(1000+(a*100));
}else {
System.out.println(1000+(b*100));
}
}
}
Today short review
코린이인 나한테 if문과 else 사이의 중괄호가 어디를 가르키는지 확인하면서 만드는 연습도 같이 할 수 있었다
'백준 문제' 카테고리의 다른 글
[백준 JAVA] 25304번 영수증 (0) | 2023.09.17 |
---|---|
[백준 JAVA] 2884번 알람시계 (0) | 2023.09.17 |
[백준 JAVA] 10171번, 10172번 (0) | 2023.03.27 |
[백준 JAVA] 10869번 사칙연산 (0) | 2023.03.24 |