[C/Python] 백준 30802번 - 웰컴 키트

매미·2024년 6월 27일

백준

목록 보기
3/13

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

문제

2024년 2월 3일 개최 예정인 온사이트 그랜드 아레나에서는 참가자들에게 티셔츠 한 장과 펜 한 자루가 포함된 웰컴 키트를 나눠줄 예정입니다. 키트를 제작하는 업체는 다음과 같은 조건으로만 주문이 가능합니다.
티셔츠는 S, M, L, XL, XXL, 그리고 XXXL의 6가지 사이즈가 있습니다. 티셔츠는 같은 사이즈의 TT장 묶음으로만 주문할 수 있습니다.
펜은 한 종류로, PP자루씩 묶음으로 주문하거나 한 자루씩 주문할 수 있습니다.
NN명의 참가자 중 S, M, L, XL, XXL, XXXL 사이즈의 티셔츠를 신청한 사람은 각각
S,M,L,XL,XXL,XXXLS, M, L, XL, XXL, XXXL명입니다. 티셔츠는 남아도 되지만 부족해서는 안 되고 신청한 사이즈대로 나눠주어야 합니다. 펜은 남거나 부족해서는 안 되고 정확히 참가자 수만큼 준비되어야 합니다.
티셔츠를 TT장씩 최소 몇 묶음 주문해야 하는지, 그리고 펜을 PP자루씩 최대 몇 묶음 주문할 수 있고, 그 때 펜을 한 자루씩 몇 개 주문하는지 구하세요.

입력

첫 줄에 참가자의 수 NN이 주어집니다. (1N109)(1 \le N \le 10^9)
둘째 줄에 티셔츠 사이즈별 신청자의 수 S,M,L,XL,XXL,XXXLS, M, L, XL, XXL, XXXL이 공백으로 구분되어 주어집니다. (0S,M,L,XL,XXL,XXXLN;(0 \le S, M, L, XL, XXL, XXXL \le N; S+M+L+XL+XXL+XXXL=N)S + M + L + XL + XXL + XXXL = N)
셋째 줄에 정수 티셔츠와 펜의 묶음 수를 의미하는 정수 TTPP가 공백으로 구분되어 주어집니다. (2T,P109)(2 \le T, P \le 10^9)

출력

첫 줄에 티셔츠를 TT장씩 최소 몇 묶음 주문해야 하는지 출력하세요.
다음 줄에 펜을 PP자루씩 최대 몇 묶음 주문할 수 있는지와, 그 때 펜을 한 자루씩 몇 개 주문하는지 구하세요.

발상

시간 제한이 0.1초로 되어 있음.
->불필요한 반복문 자제, Python에서는 input()보단 sys.stdin.readline()을 활용하는 것이 좋아보임.

Clang

#include <stdio.h>

void TshirtMungtaengi(int size[6], int T) {
    int count=0;
    for (int i=0; i<6; i++) {
        count+=size[i]/T;
        if (size[i]%T!=0)
            count++;
    }
    printf("%d\n", count);
}
int main()
{
    int N;
    int size[6];
    int T,P;
    scanf("%d", &N);
    for (int i=0; i<6; i++)
        scanf("%d", &size[i]);
    scanf("%d %d", &T, &P);
    TshirtMungtaengi(size,T);
    printf("%d %d", N/P, N%P);

    return 0;
}

Python

import sys
N = int(sys.stdin.readline())
arr=list(map(int, sys.stdin.readline().split()))
T,P = map(int, sys.stdin.readline().split())

cnt=0
for i in range(6):
    cnt+=arr[i]//T
    if (arr[i]%T!=0):
        cnt+=1
print(cnt);
print(N//P, N%P)
profile
Kwangwoon Univ. Computer Information and Engineering 24

0개의 댓글