본문 바로가기

Programming/알고리즘

[백준] 2480 - 주사위 세개 - java[자바]

 

변수 3개를 고려해야 하는 문제인데,

처음으로 판단해야 할 것은 역시 "3개의 변수가 모두 다른지, 아닌지"가  중요하다

3개의 변수가 모두 다른게 아니라면 적어도 하나 이상의 같은 변수가 존재한다

 

 

우선 모두 다를 때는 

- a, b, c 의 순서를 찾아주는 것이 중요하다.

// 모든 변수가 다른 경우
if (a != b && b != c && a != c) {
	int max;
	// a > b 일 경우
	if (a > b) {
		// c > a > b 라면
		if (c > a) {
			max = c;
		} 
		// a > (b, c)
		else {
			max = a;
		}
	}
	// b > a 라면	
	else {
		// c > b > a 라면
		if (c > b) {
			max = c;
		}
		// b > (a, c)
		else {
			max = b;
		}
	}
 
}

한편, 같은 수가 1쌍이라도 존재 할 경우에는 그 같은 쌍이 무엇인지 찾는것이 중요하다.

 

}
// 적어도 한 쌍 이상의 서로 같은 변수가 존재할 경우
else {
	// 3개의 변수가 모두 같은 경우
	if (a == b && a == c) {
		System.out.println(10000 + a * 1000);
	}
	else {
		// a가 b혹은 c랑만 같은 경우
		if(a == b || a == c) {
			System.out.println(1000 + a * 100);
		}
		// b가 c랑 같은 경우
		else {
			System.out.println(1000 + b * 100);
		}
	}
}

 

 

 

최종적인 코드는 아래와 같다.

 

 

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
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, b, c;
		a = Integer.parseInt(st.nextToken());
		b = Integer.parseInt(st.nextToken());
		c = Integer.parseInt(st.nextToken());
 
		// 만약 모든 변수가 다른 경우
		if (a != b && b != c && a != c) {
			int max;
			// 만약 a > b 라면
			if (a > b) {
				// c > a > b 라면
				if (c > a) {
					max = c;
				} 
				// a > (b, c)
				else {
					max = a;
				}
			}
			// b > a 라면	
			else {
				// c > b > a 라면
				if (c > b) {
					max = c;
				}
				// b > (a, c)
				else {
					max = b;
				}
			}
			System.out.println(max * 100);
		}
		// 적어도 한 쌍 이상의 서로 같은 변수가 존재할 경우
		else {
			// 3개의 변수가 모두 같은 경우
			if (a == b && a == c) {
				System.out.println(10000 + a * 1000);
			}
			else {
				// a가 b혹은 c랑만 같은 경우
				if(a == b || a == c) {
					System.out.println(1000 + a * 100);
				}
				// b가 c랑 같은 경우
				else {
					System.out.println(1000 + b * 100);
				}
			}
		}
	}
}

- 마무리

조건을 빼놓지 않는다면 크게 어려운 문제는 아닐듯 하다.

빈틈 없이 조건을 채워나가는 것이 중요하다.