Archives
Recent Posts
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
관리 메뉴

개발도생's Blog

[백준][Java] 15059_Hard choice 본문

BaekJoon

[백준][Java] 15059_Hard choice

개발도생 2022. 12. 8. 20:39

[백준] 15059_Hard choice 문제

 

15059번: Hard choice

The first line contains three integers Ca, Ba and Pa (0 ≤ Ca, Ba, Pa ≤ 100), representing respectively the number of meals available for chicken, beef and pasta. The second line contains three integers Cr, Br and Pr (0 ≤ Cr, Br, Pr ≤ 100), indicati

www.acmicpc.net


15059, Hard choice 문제


기내식의 종류는 총 3가지인데, 치킨, 소고기, 파스타다. 하지만 각각의 종류에는 재고가 정해져 있다.

 

그렇기 때문에 고객들 중에는 원하는 기내식을 못 먹을 수 있다. 원하는 기내식을 먹지 못하는 고객들이 몇 명인지 파악하라는 문제다.

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

/**
 * L4_15059
 */
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[] arr1 = new int[3];		// 기내식 잔량
        // int[] arr2 = new int[3];		// 고객 수요
		
        // for(int i = 0; i < arr1.length; i++){	
        //     arr1[i] = Integer.parseInt(st.nextToken());
        // }
        
        // st = new StringTokenizer(br.readLine()," ");

        // for(int i = 0; i < arr2.length; i++){
        //     arr2[i] = Integer.parseInt(st.nextToken());
        // }

        // int result = 0;

        // for(int i = 0; i < arr1.length; i++){
        //     if(arr2[i] - arr1[i] >= 0){
        //         result += arr2[i] - arr1[i];
        //     }
        // }

        // System.out.println(result);

        int C1 = Integer.parseInt(st.nextToken());
        int B1 = Integer.parseInt(st.nextToken());
        int P1 = Integer.parseInt(st.nextToken());
        
        // 둘 째 줄에 고객 수요 입력
        st = new StringTokenizer(br.readLine());
        int C2 = Integer.parseInt(st.nextToken());
        int B2 = Integer.parseInt(st.nextToken());
        int P2 = Integer.parseInt(st.nextToken());
    	
        /*
         * 고객 수요가 재고 보다 많을 때,
         * 고객 수요에서 재고를 빼준 값을 미리 선언해 둔 sum 변수에 더해준다.
         */
        int sum = 0;
        if(C1 <= C2){
            sum += C2 - C1;
        } 
        
        if(B1 <= B2){
            sum += B2 - B1;
        }
        
        if(P1 <= P2){
            sum += P2 - P1;
        }

        System.out.println(sum);
    }
}

배열을 사용한 방법과 문제 그대로 풀어본 방법이다.

 

먼저 입력을 받아오기 위해 BufferedReader객체를 사용했다.

 

[Java][Class] Bufferedreader

코딩 테스트 문제들을 풀다가 우연히 알게 된 Bufferedreader 객에 대해서 공부해봤다. Bufferedreader Class는, 이름과 같이 버퍼를 사용하는 클래스다. 일반적으로 알고 있던 Scanner Class는 사용자가 값을

nan-o-nuel-do.tistory.com

이후에는 입력한 값에는 개행을 구분해줘야 해서 StringTokenizer객체를 사용했다.

 

[Java][Class] StringTokenizer

평소 유용하게 사용하고 있는 객체 StringTokenizer를 공부해봤다. StringTokenizer Class는, 단순하게 표현한다면 문자들을 토큰화 시켜준다고 이해하면 편할 것 같다. 토큰으로 분리된 문자들을 StringToken

nan-o-nuel-do.tistory.com

개행이 구분된 값들은 선언해둔 변수에 저장해주었고, 

 

버퍼로 받아온 값들은 문자 값들이기 때문에 Integer.parseInt() 메서드로 형변환 시켜 저장했다.

 

그 이후에는 if문 조건식을 사용해 문제를 풀었다.

 

조건이 성립된다면 sum 변수에 고객 수요(C2, B2, P2) - (C1, B1, P1)의 값을 저장해주고,

 

변수 sum을 출력해주면 된다.


입력해야 되는 값
출력 값
입력해야 되는 값
출력 값
입력해야 되는 값
출력 값


이전 코드로 제출하고 캡쳐한 후에 배열로 문제를 다시 풀어서 캡처를 하지 못했다.

 

하지만 둘 다 같은 결과였고, 메모리와 시간 차이가 크게 차이나지 않았다.

 

여하튼 위와 같은 코드로(배열 포함) 제출했을 때,

맞았습니다!!

'BaekJoon' 카테고리의 다른 글

[백준][Java] 15232_Rectangles  (1) 2022.12.09
[백준][Java] 15080_Every Second Counts  (1) 2022.12.08
[백준][Java] 15051_Máquina de café  (0) 2022.12.06
[백준][Java] 15025_Judging Moose  (2) 2022.12.06
[백준][Java] 15000_CAPS  (2) 2022.12.05
Comments