개발하는 쿠키
article thumbnail

🚀 풀이 후기

StringTokenizer 까먹어서 다시 공부했습니다..

BufferedReader에서 띄어쓰기로 구분된 값을 각 변수 혹은 배열에 저장하기 위해서는 StringTokenizer를 사용해야 합니다.

하지만, 저장할 배열의 자료형이 String이거나 Character라면 더 간단한 방법을 사용할 수 있습니다.

char charInput[] = br.readLine().toCharArray();
String stringInput[] = br.readLine().split(" ");

🌒 문제 설명

🌓 문제 풀이

티셔츠는 남아도 되지만 부족해서는 안되므로 (사이즈를 선택한 사람 수 / 티셔츠 묶음 수)를 했을 때 나머지가 있다면 한 묶음 더 주문해야 합니다.

펜은 정확히 참가자 수만큼 준비되어야 하므로 (전체 인원수 / 펜 묶음 수) 만큼 펜 묶음을 주문해야 하고, 나머지 값만큼 낱개로 주문하면 됩니다. 

import java.util.*;
import java.io.*;

public class Main {
    private static int N, T, P; // N: 참가자 수, T: 티셔츠 묶음, P: 펜 묶음 
    private static int[] sizes; // 선택한 티셔츠 사이즈 값을 저장할 배열. index오름차순으로 S, M, L, XL, XXL, XXXL
    private static int minBundleOfT; // output. 최소 티셔츠 묶음 수
    private static int maxBundleOfP, remainP; // output. 최대 펜 묶음 수, 낱개로 주문하는 펜 수
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st;
        N = Integer.parseInt(br.readLine());
        st = new StringTokenizer(br.readLine());
        sizes = new int[6];
        for(int i=0;i<6;i++){
            sizes[i] = Integer.parseInt(st.nextToken());
        }
        st = new StringTokenizer(br.readLine());
        T = Integer.parseInt(st.nextToken());
        P = Integer.parseInt(st.nextToken());
        
        // 티셔츠 답을 계산합니다.
        calculateT();
        
        // 펜 답을 계산합니다.
        calculateP();
        
        StringBuilder sb = new StringBuilder();
        sb.append(minBundleOfT);
        sb.append("\n");
        sb.append(maxBundleOfP).append(" ").append(remainP);
        System.out.println(sb);
    }
    
    static void calculateT(){
        for(int i=0;i<6;i++){
            int num = sizes[i];
            if(num==0){ // 해당 사이즈를 아무도 안골랐다면 continue합니다.
                continue;
            }
            minBundleOfT += num / T; // (사이즈를 선택한 사람 수 / 티셔츠 묶음)을 계산합니다.
            if(num%T>0){ // 나머지가 0보다 크다면 티셔츠는 한 묶음 더 주문해야 하므로 ++합니다.
                minBundleOfT++;
            }
        }
    }
    
    static void calculateP(){
        maxBundleOfP = N / P; // (전체 인원 수 / 펜 묶음)을 계산합니다.
        remainP = N % P; // 펜은 나머지 값만큼 더 주문해야 합니다.
    }
}

N = 티셔츠 사이즈 개수 = 6

- 시간복잡도: O(N)

- 공간복잡도: O(N)


 

백준 문제

반응형
profile

개발하는 쿠키

@COOKIE_

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!