본문 바로가기

백준/실버

[백준 10158번] 개미 (C++)

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

 

10158번: 개미

가로 길이가 w이고 세로 길이가 h인 2차원 격자 공간이 있다. 이 격자는 아래 그림처럼 왼쪽 아래가 (0,0)이고 오른쪽 위가 (w,h)이다. 이 공간 안의 좌표 (p,q)에 개미 한 마리가 놓여있다. 개미는 오

www.acmicpc.net

#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define MAX 987654321
#define pii pair <int, int>

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    int W, H, P, Q, T;
    cin >> W >> H >> P >> Q >> T;

    int NP = (P+T) % (2*W);
    int NQ = (Q+T) % (2*H);

    if(NP > W) //반대로 옴
    {
        cout << 2*W - NP << " ";
    }
    else
    {
        cout << NP << " ";
    }

    if(NQ > H)  //반대로 옴
    {
        cout << 2*H - NQ;
    }
    else
    {
        cout << NQ;
    }

    return 0;

}

사이클이 2W, 2H 주기로 방향이 반대로 바뀐다.

따라서 T초후의 거리인 P+T와 Q+T를 2W 또는 2H로 나누고 나머지가 W보다 크다면, 반대로 온 것이다.

따라서 2W에다가 위의 나머지 값을 빼주면된다.

나머지가 W보다 크지 않다면, 그대로 나머지를 출력해주면 된다.