| 문제
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개 주사위의 나온 눈이 주어질 때, 상금을 계산하는 프로그램을 작성 하시오.
| 입력
첫째 줄에 3개의 눈이 빈칸을 사이에 두고 각각 주어진다.
| 출력
첫째 줄에 게임의 상금을 출력 한다.
| 예제 입력 1
3 3 6
| 예제 출력 1
1300
출처 : 링크텍스트
package BaekJoon;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
//방법1
public class A2480 {
public static void main(String[] args) {
// TODO Auto-generated method stub
BufferedReader bf=new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
try {
st = new StringTokenizer(bf.readLine());
//3개의 주사위 값 입력
int ju1=Integer.parseInt(st.nextToken());
int ju2=Integer.parseInt(st.nextToken());
int ju3=Integer.parseInt(st.nextToken());
//같은 눈이 3개인 경우
if(ju1==ju2 && ju2==ju3) {
System.out.println(10000+(ju2*1000));
}
//같은 눈이 2개인 경우(ju1이 ju2, ju3과 같은 경우)
else if(ju1==ju2 || ju1==ju3) {
System.out.println(1000+(ju1*100));
}else if(ju2==ju3) { //ju2와 ju3이 같은 경우
System.out.println(1000+(ju2*100));
}
//다 다른 눈인 경우
else {
int max=Math.max(ju1, Math.max(ju2, ju3));
System.out.println((max*100));
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
package BaekJoon;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
//1. 백준에 정답 확인할 때는 클래스명은 Main으로 변경
//2. 패키지 제거 후 전체 복붙하여 확인
//방법 2
public class A2480 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//Bufferreader는 String형태이기 때문에 다른 형태로 사용하려면 형변환 해줘야 함 꼭!
BufferedReader bf=new BufferedReader(new InputStreamReader(System.in));
String [] str;
int [] ju=new int[3];
try {
str = bf.readLine().split(" ");
//3개짜리 주사위 배열을 만들어서 bf.readLine을 split으로 구분하여
// 각각의 인덱스에 값이 입력되게 하였다.
for(int i=0;i<3;i++) {
ju[i]=Integer.parseInt(str[i]);
}
//3개의 값이 모두 같다면,
if(ju[0]==ju[1]&&ju[1]==ju[2]) {
int alltotal=10000+ju[0]*1000;
System.out.println(alltotal);
}else if(ju[0]==ju[1]||ju[0]==ju[2]||ju[1]==ju[2]) { //2개의 값이 같다면,
if(ju[0]==ju[1]||ju[0]==ju[2]) {
int twosametotal1=1000+ju[0]*100;
System.out.println(twosametotal1);
}else {
int twosametotal2=1000+ju[1]*100;
System.out.println(twosametotal2);
}
}else {
//Math.max는 가장 큰 값을 비교하기 위한 메서드 / 두개씩 비교한다.
int max=Math.max(ju[0],Math.max(ju[1], ju[2]));
int othertotal=max*100;
System.out.println(othertotal);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
| 느낀점
Scanner보다 BufferReader가 수행 속도가 더 빠르다는 것을 알게 되었다.(추후 포스팅 예정)
그리고 Math클래스의 max 메서드를 익힐 수 있었다.
Math.max(a,b)
: a와 b를 비교하여 최댓값 출력
두개씩 비교가 가능하다.
학원 종강 후에 코딩테스트 스터디를 진행 중인데 아주 보람차다!
간단한 기본문제 풀기로 시작했는데 앞으로 어려운 문제들 쑥쑥 풀 수 있기를~