본문 바로가기

코딩 이야기/백준 풀이

백준 10158번: 개미 C++코드(애드 혹, Ad hoc)

반응형
//10158

#include<iostream>

using namespace std;

int main(){
    int w,h,x,y,t;
    cin >> w >> h >> x >> y >> t;
    int xt = t;
    int yt = t;
    int resultX, resultY;

    if(xt - (w-x) < 0){
        resultX = x + xt;
    }else{
        xt -= w-x;
        if((xt/w)%2==0){
            resultX = w-(xt%w);
        }else{
            resultX = xt%w;
        }
    }
    if(yt - (h-y) < 0){
        resultY = y + yt;
    }else{
        yt -= h-y;
        if((yt/h)%2==0){
            resultY = h-(yt%h);
        }else{
            resultY = yt%h;
        }
    }


    cout << resultX << " " << resultY;


}

 

요새 다시 알고리즘 공부하면서 실버~골드5문제 부수는 중인데, 애드 혹을 원래 잘 안풀다가 한번 해봤는데 나름 재밌는 것 같다.

 

개미가 움직이듯이 for문이나 while로 개미 위치를 옮기는 식으로 하면 시간 초과에서 걸려버린다. 개미가 대각선으로 이동해서 헷갈릴 수 있지만, 대각선으로 이동한다고 보기보단 가로로 이동하는 동시에 세로로도 이동한다고 보면 편해진다. x축과 y축 이동을 따로 처리하고, 어짜피 벽에 튕긴다면 여러번 튕긴 후의 자리만 구하는 식으로 풀면 반복문이 필요가 없어져 시간초과에 걸리지 않는다.

반응형