[Python] 백준 23971번 - ZOAC 4

유빈·2025년 1월 8일
0

Algorithms

목록 보기
12/35
post-thumbnail

백준 문제집 PS

ses0028님의 "IT기업 및 대기업 계열사 코테보면서 비슷했던 문제들(지속적으로 업데이트 중)" (현재 기준 89문제)

이번 방학 2달동안 다 푸는 것이 목표입니다.

25.01.08 - 브론즈 5문제

문제문제 제목문제 티어문제 링크
23971ZOAC 4브론즈 3https://www.acmicpc.net/problem/23971
5073삼각형과 세 변브론즈 3https://www.acmicpc.net/problem/5073
2292벌집브론즈 2https://www.acmicpc.net/problem/2292
1157단어 공부브론즈 1https://www.acmicpc.net/problem/1157
2816디지털 티비브론즈 1https://www.acmicpc.net/problem/2816


23971번 - ZOAC 4


전체 코드 및 해설

import math as m
input = open(0).readline

H, W, N, M = map(int, input().split())
print(m.ceil(W/(M+1)) * m.ceil(H/(N+1)))

가장 많이 사람들이 앉을 수 있는 방법은 가장 왼쪽 위에 무조건 사람이 한 명 앉으면서 정해진 거리만큼만 띄워서 앉는 것이다.

가로 / (띄워야 하는 간격+1)세로 / (띄워야 하는 간격+1)의 올림수가 앉을 수 있는 사람의 수이다. 나눈 값에서 올림을 하는 이유는 생각해보면 간단하다. 예를 들어, 가로 W가 10이고 세로 H도 10이라고 가정하자. 그리고 사람들마다 가로는 2칸씩(M), 세로는 3칸씩(N) 띄워야 한다면 최대한 앉을 수 있는 방법은 다음과 같다.

# 가로
XOOXOOXOOX  # 한 행에 4명이 앉을 수 있다.

# 세로
X
O
O
O
X
O
O
O
X
O

가로 / (띄워야 하는 간격+1)에 수를 대입해보면 10/(2+1)와 같다. 계산하면 3.333...인데 올림을 해주면 4이다. 따라서, 한 행에 4명이 앉을 수 있다. 그리고 세로 / (띄워야 하는 간격+1)에 수를 대입해보면 10/(3+1)와 같다. 계산하면 2.5인데 올림을 해주면 3이므로 한 열에 3명이 앉을 수 있다.

그래서 한 행에 앉을 수 있는 수 x 한 열에 앉을 수 있는 수 인 4 x 3 = 12이므로 최대 12명이 앉을 수 있다.



profile
🌱

0개의 댓글