학원에서 배운 기본 문법을 익히고자
백준에서 푼 내용을 남겨보려고합니다.
현재는 조건문, 반복문 까지 배운 상태입니다.
1에서부터 6까지의 눈을 가진 3개의 주사위를 던져서 다음과 같은 규칙에 따라 상금을 받는 게임이 있다.
- 같은 눈이 3개가 나오면 10,000원+(같은 눈)×1,000원의 상금을 받게 된다.
- 같은 눈이 2개만 나오는 경우에는 1,000원+(같은 눈)×100원의 상금을 받게 된다.
- 모두 다른 눈이 나오는 경우에는 (그 중 가장 큰 눈)×100원의 상금을 받게 된다.
예를 들어, 3개의 눈 3, 3, 6이 주어지면 상금은 1,000+3×100으로 계산되어 1,300원을 받게 된다. 또 3개의 눈이 2, 2, 2로 주어지면 10,000+2×1,000 으로 계산되어 12,000원을 받게 된다. 3개의 눈이 6, 2, 5로 주어지면 그중 가장 큰 값이 6이므로 6×100으로 계산되어 600원을 상금으로 받게 된다.
3개 주사위의 나온 눈이 주어질 때, 상금을 계산하는 프로그램을 작성 하시오.
친절하게 조건은 문제에 다 나와있다
일단 세개의 수가 모두 같다는 조건은 구현하기 쉬웠지만
같은 눈이 두개가 나올때 조금 헷갈렸다.
처음엔 else if(a == b || b ==c){
System.out.println(1000 + (a * 100)); }
라고 작성했다. 코드를 실행하고 보니 조건이 잘못된걸 깨달았다
삽질을 하다가 아래 처럼 고쳤는데
모두 다른눈이 나오는 경우 가장 큰 숫자를 고르는코드 작성하는데
a > b && a > c
b>c && b>a 이런식으로 작성했다 코드가 너무 길어져서 구글링 해보니
Math.max라는 함수가 있었다. 10줄 정도 되는 코드를 한줄로 줄어든걸보니 현타가 왔다.......
너무 한문제에 오래 매달려도 안좋은거같다..
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();
if (a == b && b == c && a == c) {
System.out.println(10000 + a * 1000);
} else if (a == b || a == c) {
System.out.println(1000 + (a * 100));
} else if(b == c) {
System.out.println(1000 + b * 100);
}
else {
System.out.println(Math.max(a, Math.max(b, c)) * 100);
}
}
}
'Java' 카테고리의 다른 글
자바 오버로딩, 생성자 (0) | 2024.04.13 |
---|---|
자바 이차원배열 (2) | 2024.01.25 |
자바 배열 (0) | 2024.01.15 |
자바 완전수 구하기. (0) | 2024.01.09 |
자바 2438 별찍기.. (0) | 2024.01.09 |