본문 바로가기

Algorithm/PS

[1일 1알고] B3 23971 ZOAC 4

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

간단한 사칙연산 계산 문제입니다.

 

직접 배열을 만들어서 계산해도 시간 통과는 충분하겠지만 시간이야 줄이면 좋으니까요


 W*H 배열에 세로 N, 가로 M칸 간격으로 앉아야합니다.

 

기본적으로 2칸마다 앉는다면 2, 4, 6, 8 처럼 계산하는 것이 편할 것입니다.

하지만 1, 3, 5, 7, 9와같이 앉게되기때문에 계산을 위해서 첫칸에는 앉는다고 치고 계산했습니다.

 

식을 보면 이해가 쉬울 것입니다.

#include <algorithm>
#include <iostream>
#include <vector>
#include <string>
#include <sstream>
#include <math.h>
#include <climits>

using namespace std;

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    
    // W개씩H행
    // 세로 N, 가로 M칸 이상 비우고 앉아야 함
    int H, W, N, M;
    cin >> H >> W >> N >> M;

    --H; --W; ++N; ++M;

    int r = H / N + 1;
    int c = W / M + 1;

    cout << r * c;
    return 0;
}