728x90
반응형
1. 문제
https://www.acmicpc.net/problem/2480
2. 접근 및 해결
2-1) 접근
문제에는 아래와 같은 조건이 존재합니다.
- 같은 눈이 3개가 나오면 10,000원+(같은 눈)×1,000원의 상금을 받게 된다.
- 같은 눈이 2개만 나오는 경우에는 1,000원+(같은 눈)×100원의 상금을 받게 된다.
- 모두 다른 눈이 나오는 경우에는 (그 중 가장 큰 눈)×100원의 상금을 받게 된다.
처음 봤을 때 IF문을 많이 쓰면 금방 해결이 되겠다고 생각이 들었지만,
문제 해결 시 최소한의 IF문을 사용하고 싶었습니다.
각각 하나하나 IF문을 걸고, 각 상황에 따라서는 조건을 달리하는 방법을 생각해보았습니다.
2-2) 해결
1. 같은 눈이 3개가 나오면 10,000원+(같은 눈)×1,000원의 상금을 받게 된다.
이건 IF문으로 A=B=C를 비교하면 됩니다.
3. 모두 다른 눈이 나오는 경우에는 (그 중 가장 큰 눈)×100원의 상금을 받게 된다.
A !=B, A!=C, B!=C를 확인하고,
가장 큰 눈을 알아야하니까 오름차순 정렬을 통해 가장 큰 눈이 가장 리스트의 뒤쪽에 존재하도록 했습니다.
2. 같은 눈이 2개만 나오는 경우에는 1,000원+(같은 눈)×100원의 상금을 받게 된다.
이건 1, 3의 조건에서 else를 걸고,
같은 눈이 무엇인지 알아야하니까 오름차순으로 정렬된 리스트에서 중간에 있는 값을 찾으면 됩니다. 주사위 3개를 굴리기 때문에 가능한 방법입니다.
예를들어 3 2 2 를 오름차순 정렬하면 2 2 3이니까 무조건 중간(두번째)에 있는 숫자인 2가 중복되는 숫자이가 됩니다.
3. 코드(JAVA)
import java.util.*;
import java.io.*;
public class p2480 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine());
int[] list = new int[3];
for(int i=0; i<3; i++) {
list[i] = Integer.parseInt(st.nextToken());
}
Arrays.sort(list);
if (list[0] == list[1] && list[1] == list[2]) {
bw.write(Integer.toString(10000+list[0]*1000));
} else if (list[0] != list[1] && list[0] != list[2] && list[1] != list[2]) {
bw.write(Integer.toString(list[2]*100));
} else {
bw.write(Integer.toString(1000+list[1]*100));
}
br.close();
bw.close();
}
}
728x90
반응형
'Study > Algorithm' 카테고리의 다른 글
[BOJ] 백준 2493번: 탑_자바(JAVA) (0) | 2024.02.04 |
---|---|
[BOJ] 백준 1874번: 스택 수열_자바(JAVA) (0) | 2024.02.04 |
[BOJ] 백준 3273번: 두수의 합_자바(JAVA) *정렬, 투포인터 이용하지 않고 풀기 (0) | 2024.02.02 |
[BOJ] 백준 1267번: 핸드폰 요금_자바(JAVA) (0) | 2024.02.01 |
[BOJ] 백준 10799번: 쇠막대기 _자바(JAVA) (0) | 2022.06.13 |