© 2025 anveloper.dev
GitHub·LinkedIn·Contact

목차

  • 문제
  • 풀이
  • 코드
  • 복잡도
풀이 목록으로 돌아가기

BOJ 4697 - Fifty Coats of Gray

2026-03-12
BOJ
브론즈 IV
cpp
원본 문제 보기
수학
구현
기하학

문제

BOJ 4697 - Fifty Coats of Gray

여러 방의 벽·천장 면적에서 창문·문 면적을 빼고 필요한 페인트 캔 수를 구하는 문제

풀이

각 방의 벽 4면과 천장의 총 면적을 계산한 뒤, 창문·문 면적을 빼고 방 개수를 곱한다. 캔 하나가 커버하는 면적으로 나누어 올림 처리한다.

코드

#include <iostream>
#include <cmath>
 
using namespace std;
 
int main() {
  int n, w, l, h, area, m;
 
  while (cin >> n >> w >> l >> h >> area >> m && n != 0) {
    double total_wall_area = 2 * (w * h + l * h) + (w * l);
 
    double subtract_area = 0;
    for (int i = 0; i < m; ++i) {
      int sw, sh;
      cin >> sw >> sh;
      subtract_area += (sw * sh);
    }
 
    double total_paint_area = (total_wall_area - subtract_area) * n;
 
    int cans = ceil(total_paint_area / area);
 
    cout << cans << endl;
  }
 
  return 0;
}

복잡도

  • 시간: O(m) (m: 창문·문 개수)
  • 공간: O(1)

최근 글

  • 2026-03-15BOJ 4757 - A Contesting Decision
  • 2026-03-14BOJ 4749 - Take Your Vitamins
  • 2026-03-13BOJ 4732 - 조옮김
  • 2026-03-11BOJ 4678 - Skew Binary
  • 2026-03-10BOJ 4646 - Magnificent Meatballs
이전 글

BOJ 4678 - Skew Binary

다음 글

BOJ 4732 - 조옮김