Algorithm/Baekjoon

[백준] 2480번 : 주사위 세 개 - Java

unknownomad 2022. 2. 17. 09:33

https://www.acmicpc.net/problem/2480

 

2480번: 주사위 세개

1에서부터 6까지의 눈을 가진 3개의 주사위를 던져서 다음과 같은 규칙에 따라 상금을 받는 게임이 있다.  같은 눈이 3개가 나오면 10,000원+(같은 눈)×1,000원의 상금을 받게 된다.  같은 눈이 2개

www.acmicpc.net



입력 방식

1. Scanner

2. BufferedReader

2.1. 문자열 받는 대표적인 방법

  • read():  한 문자만 읽어오기
  • readLine(): 한 행 읽어오기(사용 권장)
  • readLine()은 한 행을 전부 읽기에 공백 단위로 입력해준 문자열을 다시 공백 단위로 분리해줘야 함

 

2.2. 문자열 분리 방법

2.2.1. StringTokenizer 클래스

  • split()보다 성능 좋음(단순 규칙으로 문자열 분리하거나 데이터가 더 많아질 때 추천)

2.2.2. split()

 

2.3. 형변환 주의점

  • StringTokenizer 클래스와 split() 모두 문자열을 반환하기에 자료형 타입 확인 후 형변환 유의하기
  • double형으로 풀면 나머지가 정수로 나와도 소수점까지 같이 출력되어 오답으로 처리됨

풀이

1. Scanner + if 문

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) {
            System.out.print(10000 + (A * 1000));
        } else if(A == B || A == C) {
            System.out.print(1000 + (A * 100));
        } else if(B == C) {
            System.out.print(1000 + (B * 100));
        } else {
            System.out.println(Math.max(Math.max(A, B), C) * 100);
        }
    }
}

2. BufferedReader + if 문

2.1. BufferedReader + StringTokenizer 클래스 + if 문

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
 
public class Main {
    public static void main(String[] args) throws IOException {
	
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        int A = Integer.parseInt(st.nextToken());
        int B = Integer.parseInt(st.nextToken());
        int C = Integer.parseInt(st.nextToken());
        
        if(A == B && B == 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(Math.max(A, B), C) * 100);
        }
    }
}

 

2.2. BufferedReader + split() + if 문

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
 
public class Main {
    public static void main(String[] args) throws IOException {
	
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String[] str = br.readLine().split(" ");
        int A = Integer.parseInt(str[0]);
        int B = Integer.parseInt(str[1]);
        int C = Integer.parseInt(str[2]);
        
        if(A == B && B == 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(Math.max(A, B), C) * 100);
        }
    }
}

성능

  • BufferedReader > Scanner