https://www.acmicpc.net/problem/2480
2480번: 주사위 세개
1에서부터 6까지의 눈을 가진 3개의 주사위를 던져서 다음과 같은 규칙에 따라 상금을 받는 게임이 있다. 같은 눈이 3개가 나오면 10,000원+(같은 눈)×1,000원의 상금을 받게 된다. 같은 눈이 2개
www.acmicpc.net
문제
import java.util.Scanner;
public class Main2480 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
int c = sc.nextInt();
if (a==b && b==c) {
System.out.println((a*1000)+10000);
} else if (b==c) {
System.out.println((b*100)+1000);
} else if (a==b || a==c) {
System.out.println((a*100)+1000);
} else {
if (a > b && a > c) {
System.out.println(a*100);
} else if (b > a && b > c) {
System.out.println(b*100);
} else if (c > a && c > b) {
System.out.println(c*100);
}
}
sc.close();
}
}
1. 3개의 숫자가 모두 같은 값인 경우를 판별하는 조건문이 2개만 같은 경우보다 먼저 와야한다. 만약 이클립스에서 실행해보지 않았으면 틀렸을 문제다. 이유는 2개만 같은 경우가 먼저 작성된 경우 3개가 같은 경우에도 조건문이 참으로 판별되기 때문이다.
2. https://st-lab.tistory.com/295
[백준] 2480번 : 주사위 세개 - JAVA [자바]
https://www.acmicpc.net/problem/2480 2480번: 주사위 세개 1에서부터 6까지의 눈을 가진 3개의 주사위를 던져서 다음과 같은 규칙에 따라 상금을 받는 게임이 있다. 같은 눈이 3개가 나오면 10,000원+(같은 눈)
st-lab.tistory.com
3개의 값이 모두 다를 경우 최대값을 찾아서 상금을 산출해야한다. 위 글과 비교했을 때 위 글작성자는 변수 max를 선언하여 a,b,c 세개의 값중 최대값을 담게 하였고, 그 값으로 출력문을 하나만 작성했다. 그리고 Math.max 메소드를 이용해 최대값을 구하는 방식도 다르다. 사실 이러한 점들이 작성자와 내 코드사이에 실행시간 차이를 만드는줄 알았는데 코드를 그대로 옮겨서 채점해보니 별반 다르지 않았다. 아마도 Java버전 차이 때문이라고 생각한다... 물론 BufferedReader의 유무는 존재한다.
기초부터 다지면서 나아가자고 제일 쉬운 문제들 부터 풀고 있는데, 이런 문제들에서도 코드가 이렇게나 다르다는게 새삼 놀랍다. 어떤식의 코드를 작성해도 좋으나 그 코드를 작성하게되는 근거를 명확히 인지하고, 더 효율적으로 작성하는 방법에 대해 끊임없이 고민해야한다.
'백준' 카테고리의 다른 글
백준 2438번 220914 (0) | 2022.09.14 |
---|---|
백준 10950번 220914 (0) | 2022.09.14 |
백준 2884번 220906 (0) | 2022.09.06 |
백준 14681번 220905 (0) | 2022.09.05 |
백준 2753번 220905 (0) | 2022.09.05 |