본문 바로가기
알고리즘/백준 문제

23971 - ZOAC 4

by HDobby 2023. 2. 22.

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

생각해 보기

  • 단순 구현이면 5만 x 5만이라 시간초과가 나와야 하지만 넘어가는 것 같다.
  • 가로행이 4칸이면 1칸 간격으로 2명, 세로열이 5칸이면 1칸 간격으로 3명이 들어간다.
  • 10 5 2 2 이면 세로열이 10칸이고 3칸 간격이므로 ceil(10/3) = 4칸, 가로행이 5칸이고 3칸 간격이므로 ceil(5/3) = 2칸 총 4 * 2 8칸이 나온다.

예제

더보기
10 10 2 2
16

코드

구현

더보기
#include<iostream>

using namespace std;

int H,W,N,M;
int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    cin>>H>>W>>N>>M;

    int cnt=0;
    for(int i=1;i<=H;i+=N+1){
        for(int j=1;j<=W;j+=M+1){
            ++cnt;
        }
    }
    cout<<cnt<<'\n';

    return 0;
}

수학

더보기
#include<iostream>
#include<cmath>

using namespace std;

int H,W,N,M;
int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    cin>>H>>W>>N>>M;

    cout<<(int)ceil((double)H/(N+1)) * (int)ceil((double)W/(M+1))<<'\n';

    return 0;
}

ceil의 반환 값이 double 이기 때문에 int로 타입캐스팅을 해줘야 한다.

 

728x90

댓글