개발 기초/알고리즘

[BOJ23971/Python] ZOAC 4

아모르AMORE 2024. 3. 5. 12:53

1. 문제 링크 : https://www.acmicpc.net/problem/23971

 

23971번: ZOAC 4

i행 j열 자리를 (i, j)라고 할 때, (1,1)에 참가자가 앉은 경우 다른 참가자는 (1,2), (2,1), (2,2) 자리를 제외한 나머지 자리에 앉을 수 있다. (2,2)의 경우는 (1,1)과 행 번호 및 열 번호의 차가 1보다 크

www.acmicpc.net

 

2. W개씩 H행에 걸쳐 있을 때, 모든 참가자는 세로로 N칸 또는 가로로 M칸 이상 비우고 앉아야 한다.

 

3. 메모리 초과 코드

# col : W , row : H
# 세로 N or 가로 M 띄고 앉기
input_lst = list(map(int, input().split()))
H, W, N, M = input_lst[0], input_lst[1], input_lst[2], input_lst[3] # 5 4 1 1
seats = [[0]*W for _ in range(H)]
# 한 명이 자리에 앉는 경우 주위를 -1 로 만들어서 앉을 수 없도록 해주기
for r in range(0, H, M+1):
    for c in range(0, W, N+1):
        seats[r][c] = 1
cnt = 0
for r in range(H):
    for c in range(W):
        if seats[r][c] == 1:
            cnt += 1
print(cnt)

 

4. 정답 코드

import math
H, W, N, M = map(int, input().split())
a = math.ceil(W/(M+1))
b = math.ceil(H/(N+1))
print(a*b)

 

5. 고찰

메모리 제한 : 512MB

시간 제한 : 1초