경우의 수 전부 나열
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br= new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int A = Integer.parseInt(st.nextToken());
int B = Integer.parseInt(st.nextToken());
int C = Integer.parseInt(st.nextToken());
int prize = 0;
if(A==B && B==C) {
prize = 10000+A*1000;
}else if((A==B && A!=C) || (A==C && A!=B) || (B==C && B!=A)) {
if(A==B) {
prize = 1000+A*100;
}else if(B==C) {
prize = 1000+B*100;
}else if(C==A) {
prize = 1000+C*100;
}
}else if(A!=B && B!=C){
if(A>B && A>C) {
prize = A*100;
}else if(B>A && B>C) {
prize = B*100;
}else if(C>A && C>B) {
prize = C*100;
}
}
System.out.println(prize);
}
}
세 개의 수가 전부 같을 때, 두 개만 같을 때, 전부 다를 때로 각각 나눠서 조건문을 전부 나열해 준다.
다른 블로그들을 보니 다른 방법의 풀이도 있는데 이렇게 푸는게 더 간단한 것 같다.
}else if((A==B && A!=C) || (A==C && A!=B) || (B==C && B!=A)) {
int max=0;
if(A==B) {
max = A;
}else if(B==C) {
max = B;
}else if(C==A) {
max = C;
}
prize = 1000+max*100;
}else if(A!=B && B!=C){
int max=0;
if(A>B && A>C) {
max = A;
}else if(B>A && B>C) {
max = B;
}else if(C>A && C>B) {
max = C;
}
prize = max*100;
}
사실 뒤에 두개의 else if 문의 경우 최댓값을 따로 int max=0; 으로 정의해주고 풀이하면
prize = 1000+max*100; 그리고 prize = max*100; 을 각각 한번만 써주면 된다.
Arrays.sort() 이용한 풀이
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br= new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine()," ");
int A = Integer.parseInt(st.nextToken());
int B = Integer.parseInt(st.nextToken());
int C = Integer.parseInt(st.nextToken());
int[] diceInt = {A,B,C};
Arrays.sort(diceInt);
int a = diceInt[0];
int b = diceInt[1];
int c = diceInt[2];
int prize = 0;
if(a==b && b==c) {
prize = 10000+a*1000;
}else if((a!=b && b==c) ||(a==b && b!=c)) {
if(b==c) {
prize = 1000+b*100;
}else if(a==b) {
prize = 1000+b*100;
}
}else if(a!=b && b!=c) {
prize = c*100;
}
System.out.println(prize);
}
}
주사위를 굴려나온 세 개의 수를 배열에 넣은 다음 Arrays.sort();로 오름차순 정리를 해준다.
이 경우, 세 개의 수 a,b,c는 입력받는 즉시 a<=b<=c 로 설정되기 때문에 훨씬 간단한 풀이가 나온다.
'알고리즘 풀이' 카테고리의 다른 글
[백준]10950번:A+B-3 - java 풀이 (0) | 2023.03.30 |
---|---|
[백준]2739번:구구단 - java 풀이 (0) | 2023.03.30 |
[백준]2525번:오븐 시계 - java 풀이 (0) | 2023.03.27 |
[백준]2884번:알람시계 - java 풀이 (0) | 2023.03.26 |
[백준]14681번:사분면 고르기 - java 풀이 (0) | 2023.03.26 |