본문으로 건너뛰기

30802. 웰컴 키트

문제 풀이

js
const testcases = [
  {
    input: '23\n3 1 4 1 5 9\n5 7',
    output: '7\n3 2',
  },
];

function solution(input) {
  const inputParsed = input
    .trim()
    .split('\n')
    .map(val => val.split(' ').map(Number));

  let lineIdx = 0;
  const [N] = inputParsed[lineIdx++];
  const sizes = inputParsed[lineIdx++];
  const [T, P] = inputParsed[lineIdx];

  const result = [];

  let tShirtsBundleCnt = 0;
  sizes.forEach(size => {
    tShirtsBundleCnt += Math.ceil(size / T);
  });
  result.push(tShirtsBundleCnt);

  const penBundleCnt = Math.floor(N / P);
  const penCnt = N % P;
  result.push(`${penBundleCnt} ${penCnt}`);

  return result.join('\n');
}

export default { solution, testcases };
js
const testcases = [
  {
    input: '23\n3 1 4 1 5 9\n5 7',
    output: '7\n3 2',
  },
];

function solution(input) {
  const inputParsed = input
    .trim()
    .split('\n')
    .map(val => val.split(' ').map(Number));

  let lineIdx = 0;
  const [N] = inputParsed[lineIdx++];
  const sizes = inputParsed[lineIdx++];
  const [T, P] = inputParsed[lineIdx];

  const result = [];

  let tShirtsBundleCnt = 0;
  sizes.forEach(size => {
    tShirtsBundleCnt += Math.ceil(size / T);
  });
  result.push(tShirtsBundleCnt);

  const penBundleCnt = Math.floor(N / P);
  const penCnt = N % P;
  result.push(`${penBundleCnt} ${penCnt}`);

  return result.join('\n');
}

module.exports = { solution, testcases };
ts
import type { Input, Output, Testcases } from 'bananass';

const testcases = [
  {
    input: '23\n3 1 4 1 5 9\n5 7',
    output: '7\n3 2',
  },
] satisfies Testcases;

function solution(input: Input): Output {
  const inputParsed = input
    .trim()
    .split('\n')
    .map(val => val.split(' ').map(Number));

  let lineIdx = 0;
  const [N] = inputParsed[lineIdx++];
  const sizes = inputParsed[lineIdx++];
  const [T, P] = inputParsed[lineIdx];

  const result = [];

  let tShirtsBundleCnt = 0;
  sizes.forEach(size => {
    tShirtsBundleCnt += Math.ceil(size / T);
  });
  result.push(tShirtsBundleCnt);

  const penBundleCnt = Math.floor(N / P);
  const penCnt = N % P;
  result.push(`${penBundleCnt} ${penCnt}`);

  return result.join('\n');
}

export default { solution, testcases };
ts
import type { Input, Output, Testcases } from 'bananass';

const testcases = [
  {
    input: '23\n3 1 4 1 5 9\n5 7',
    output: '7\n3 2',
  },
] satisfies Testcases;

function solution(input: Input): Output {
  const inputParsed = input
    .trim()
    .split('\n')
    .map(val => val.split(' ').map(Number));

  let lineIdx = 0;
  const [N] = inputParsed[lineIdx++];
  const sizes = inputParsed[lineIdx++];
  const [T, P] = inputParsed[lineIdx];

  const result = [];

  let tShirtsBundleCnt = 0;
  sizes.forEach(size => {
    tShirtsBundleCnt += Math.ceil(size / T);
  });
  result.push(tShirtsBundleCnt);

  const penBundleCnt = Math.floor(N / P);
  const penCnt = N % P;
  result.push(`${penBundleCnt} ${penCnt}`);

  return result.join('\n');
}

module.exports = { solution, testcases };

해설

티셔츠 묶음 수

각 사이즈별 필요한 묶음 수는 다음과 같습니다:

ST, MT, LT, XLT, XXLT, XXXLT

총 티셔츠 묶음 수는:

ST+MT+LT+XLT+XXLT+XXXLT

펜 묶음 수와 낱개 수

총 참가자 수: N

펜은 정확히 N자루 준비해야 함.

  • 최대한 많은 묶음: NP
  • 낱개 주문 수: NmodP

기여자