본문으로 건너뛰기
풀이 목록으로 돌아가기

BOJ 4824 - Post Office

2026-03-17
BOJ
브론즈 I
cpp
원본 문제 보기
구현

문제

BOJ 4824 - Post Office

우편물의 세 변 길이가 주어질 때, 최소 규격(길이 125, 너비 90, 두께 0.25)을 만족하고 추가 조건에 맞춰 letter, packet, parcel, not mailable로 분류한다.

풀이

세 값을 정렬해 길이(L)·너비(H)·두께(T) 순으로 대응시킨 뒤 최소 치수 미달이면 not mailable로 조기 종료한다. 이후 letter → packet → parcel 순으로 조건 분기한다. parcel은 L + 2*(H + T) <= 2100을 만족해야 한다.

코드

#include <algorithm>
#include <iostream>
#include <vector>
 
using namespace std;
 
int main() {
  double d[3];
  while (cin >> d[0] >> d[1] >> d[2] && (d[0] != 0 || d[1] != 0 || d[2] != 0)) {
    sort(d, d + 3);
    double L = d[2];
    double H = d[1];
    double T = d[0];
 
    if (L < 125 || H < 90 || T < 0.25) {
      cout << "not mailable" << endl;
      continue;
    }
 
    if (L <= 290 && H <= 155 && T <= 7) {
      cout << "letter" << endl;
    } else if (L <= 380 && H <= 300 && T <= 50) {
      cout << "packet" << endl;
    } else if (L + 2 * (H + T) <= 2100) {
      cout << "parcel" << endl;
    } else {
      cout << "not mailable" << endl;
    }
  }
  return 0;
}

복잡도

  • 시간: O(1) (테스트 케이스당)
  • 공간: O(1)

최근 글