[백준/Python] 23971번 : ZOAC 4
문제
https://www.acmicpc.net/problem/23971
예제
풀이
첫 시도에서는 단순하게 2차원 배열을 생성하여 좌표를 찍어 문제를 풀어내려 했는데, input 값이 최대 50,000으로 크다고 판단되어서 다른 방법을 고민하게 되었다.
내가 생각한 풀이 방법은 다음과 같다.
가로로 한줄에 앉을 수 있는 인원을 구하는데, 배열을 선언하지 않고 포인터 변수를 통해 카운팅한다.
가로에 앉는 인원을 구했으면, 세로로 총 몇명이 앉을 수 있는지를 구한다.
따라서 첫번째로 가로에 앉을 수 있는 인원의 수를 구한 뒤, 세로를 기준으로 몇 줄이 사람들이 앉는 줄인지를 구했다.
H, W, N, M = map(int, input().split())
x = 0
y = 0
current_x = 0
current_y = 0
# 가로로 앉을 수 있는 인원의 총합 : x
while current_x < W:
x += 1
current_x += (M+1)
# 세로로 앉을 수 있는 줄마다 x값 더해주기
while current_y < H:
y += x
current_y += (N+1)
print(y)
후기
찾아보니 수학적 규칙을 찾아 math.ceil()
을 활용하여 반올림한 값을 사용하는 풀이가 대부분인 것 같다. 수학적인 규칙을 찾지 못하더라도 방법을 찾아 구현한 것에 의의를 두자..