코딩 테스트/백준

[Python] 백준 23971 ZOAC 4

위시리 2025. 1. 24. 08:24

 

문제 분석

  • 모든 참가자는 세로로 N칸, 가로로 M칸 이상 비우고 앉아야 한다.
  • 즉, 다른 모든 참가자와 세로줄 번호의 차가 N보다 크거나 가로줄 번호의 차가 M보다 큰 곳에만 앉을 수 있다.
  • 최대 몇 명이 강의실에 앉을 수 있는가?

 

아이디어 / 코드 설계

  • 띄어야 하는 칸이 2칸이라면, 3(2+1)칸에 한명 씩 앉을 수 있다.
  • 만약 한 줄이 3의 배수라면 (한 줄의 길이) // 3 만큼 앉을 수 있지만, 만약 3의 배수가 아니라면 1명 더 앉을 수 있다.

 

정답 코드

import sys
input = sys.stdin.readline

h, w, r, c = map(int, input().split())
def ans(a,b) :
    if a % (b+1) == 0 : # 배수이면
        return a//(b+1)
    return a//(b+1) + 1

print(ans(h,r) * ans(w,c))