[백준]2480 - 주사위 세개 / Math.max(a,b)

goyoung·2024년 1월 6일
0

[백준]코딩테스트

목록 보기
1/6

| 문제
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를 비교하여 최댓값 출력
두개씩 비교가 가능하다.


학원 종강 후에 코딩테스트 스터디를 진행 중인데 아주 보람차다!
간단한 기본문제 풀기로 시작했는데 앞으로 어려운 문제들 쑥쑥 풀 수 있기를~

0개의 댓글