import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); //세 주사위의 값을 입력 받는다. int a = sc.nextInt(); int b = sc.nextInt(); int c = sc.nextInt(); // 눈이 모두 다를경우 가장 큰 눈으로 상금을 계산하므로, 대소비교를 위해 미리 a의 값을 max에 넣어 놓는다. int max = a; //1번 조건 -> a,b,c가 전부 값이 같을 경우 if(a==b && b==c) { System.out.println(10000+(a*1000)); //2번 조건 -> a와 b가 같고, a와 c의 값이 다르거나 a와 c가 같고, a와 b의 값이 다른경우 // a를 기준으로 잡아서 비교하였기 때문에 항상 a의 값은 b나 c와 같은 조건이므로 a*100으로 계산을 했다. }else if((a==b && a!=c) || (a==c && a!=b)) { System.out.println(1000+(a*100)); //2번 조건(b를 기준으로 분할) -> 위에서 이 조건 까지 같이 비교하면 변수가 생길 수 있으므로 b를 기준으로 // b와 c가 같고 a와 b가 다를 경우로 한번 더 분리해주었다. }else if(b==c && a!=b) { System.out.println(1000+(b*100)); //3번 조건(모두 다를때) -> 모두 다를때 가장 큰 눈을 기준으로 계산하므로, a의 값을 max에 이미 넣어둔 상태기때문에 // max를 b와 c와 비교하여 max의 값을 가장 크게 설정해준다. 그리고 출력해준다. }else { if(max < b) { max = b; }if(max < c) { max = c; } System.out.println(max * 100); } } }
3개의 1~6 까지의 숫자를 입력 받았을때, 모두 같은 수가 나올 경우의 수는 a=b=c 1가지 밖에 없다.
a,b,c 세 개의 숫자를 입력 받았을때 같은 수가 2개 나올 경우의 수는 3가지가 있다.
1번 조건 a==b && a!=c
2번 조건 a==c && a!=b
3번 조건 b==c && a!=b
코드를 작성할때 3번 조건까지 다 결합하게 되면,
결과를 출력할때
1번 조건은 a와 b가 같고 a는 c와 다르다.
2번 조건은 a와 c가 같고 a는 b와 다르다.
3번 조건이 b와 c가 같고 a는 b와 다르다.
이렇게 되면 1,2번 조건은 1000+(a 100)을 해도 결과가 제대로 나온다.
하지만 3번 조건에 해당 될 경우 a는 b와 c와는 다른 값을 가지게 되므로 1000+(a 100)을 해서는 안된다.
따라서 else if문을 하나 더 추가해서 3번 조건은 분리해 주었다.
모두 같은 수가 나올 경우의 수 보다는 조금 복잡했다.
a의 값을 max라는 변수에 저장해준다.
그 다음 a는 b보다 큰지 c보다 큰지 비교를 해준다.
a의 값이 가장 크다면 a의 값이 max에 저장되어 출력되고
a의 값이 두번째로 크다면 b와의 비교에서 조건이 성립하지 않아,
c의 값이 max의 값이 될 것 이다.
a의 값을 기준으로 b와 c의 값과의 대소비교를 진행 하여 최대값을 얻어낼 수 있도록 작성하였다.