[BaekJoon] 5543번 - 상근날드 (java)

1. 문제

👉 문제 바로가기

- 조건

시간 제한 메모리 제한
1초 128MB


- 문제

상근날드에서 가장 잘 팔리는 메뉴는 세트 메뉴이다. 주문할 때, 자신이 원하는 햄버거와 음료를 하나씩 골라, 세트로 구매하면, 가격의 합계에서 50원을 뺀 가격이 세트 메뉴의 가격이 된다.

햄버거는 총 3종류 상덕버거, 중덕버거, 하덕버거가 있고, 음료는 콜라와 사이다 두 종류가 있다.

햄버거와 음료의 가격이 주어졌을 때, 가장 싼 세트 메뉴의 가격을 출력하는 프로그램을 작성하시오.



- 입력

입력은 총 다섯 줄이다. 첫째 줄에는 상덕버거, 둘째 줄에는 중덕버거, 셋째 줄에는 하덕버거의 가격이 주어진다. 넷째 줄에는 콜라의 가격, 다섯째 줄에는 사이다의 가격이 주어진다. 모든 가격은 100원 이상, 2000원 이하이다.



- 출력

첫째 줄에 가장 싼 세트 메뉴의 가격을 출력한다.



- 예제

  입력      출력  
800
700
900
198
330
848
1999
1999
100
189
100
150





2. 풀이


- 알고리즘

for 반복문을 사용해 메뉴 가격을 5번 입력받는다.

for (초기식; 조건식; 증감식) {
    조건식의 결과가 참인 동안 반복적으로 실행하고자 하는 명령문 작성;
}




2개의 입력방식을 사용해서 결과를 출력한다.

  1. Scanner 클래스
  2. BufferedReader 클래스





2-1. Scanner 클래스

Math 클래스의 min() 을 사용해 최솟값을 구한다.

import java.util.Scanner;

public class Main{
    public static void main(String args[]){
        Scanner sc = new Scanner(System.in);
        
        int hamMin = 2001;
        int bevMin = 2001;
        
        for(int i=1;i<=5;i++){
            int price = sc.nextInt();
            
            if(i <= 3){ // 햄버거
                hamMin = Math.min(hamMin,price);
            }else{ //음료
                bevMin = Math.min(bevMin,price);
            }
        }
        System.out.println(hamMin + bevMin - 50);
    }
}

위와같이 객체를 생성할 때, Scanner(System.in) 에서 System.in 은 입력한 값을 Byte 단위로 읽는 것을 뜻한다.

int형 데이터를 입력받기 위해 nextInt() 메서드를 사용한다.

Math 클래스의 min() 를 사용해 두 값 중 최솟값을 구한다.



[여기서 잠깐!]

Scanner에 대해 더 자세히 알고싶다면 여기 를 클릭하세요




2-2. BufferedReader 클래스 사용

if 조건문 을 사용해 최솟값을 구한다.

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

public class Main{
    public static void main(String args[]) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
        
        int hamMin = 2001;
        int bevMin = 2001;
        
        for(int i=1;i<=5;i++){
            int price = Integer.parseInt(br.readLine());
            
            if(i <= 3){ // 햄버거
                if(price < hamMin){
                    hamMin = price;
                }

            }else{ //음료
                if(price < bevMin){
                    bevMin = price;
                }

            }
        }
        System.out.println(hamMin + bevMin - 50);
    }
}

readLine() 메서드를 사용해 입력받은 값을 한 줄 통째로 읽어 String 으로 반환한다.

Integer.parseInt()을 사용해 String형을 int형으로 변환시켜준다.



[여기서 잠깐!]

BufferedReader 클래스에 대해 더 알아보고 싶으면 여기를 클릭하면 된다.






3. Scanner VS BufferedReader 성능 비교

image

입력의 경우 확실히 Scanner 보다는 BufferedReader 가 빠른 것을 볼 수 있다.





관련 페이지

Categories:

Updated:

Leave a comment