BOJ 10158 개미


사용한 알고리즘

  • 시뮬레이션

알고리즘 설명

  • 개미가 벽에 부딧치게 되는 시간을 계산한다.
  • 벽 앞까지 개미을 움직이게 한 뒤에 개미가 움직일 방향을 계산한다.
  • 시간이 모두 사용할때 까지 위를 반복한다.

풀이

// baekjoon 10158 yechan
#include <cstdio>
#include <algorithm>
using namespace std;

int W, H, p, q, t, dx, dy, dist;

// 상하 또는 좌우에 개미가 부딫치게 될때 최소 거리 계산
inline int goToBound(int x, int y) {
	return min(dx>0 ? W-x : x, dy>0 ? H-y : y);
}

// 부딧쳤을때 본래 방향에 반대 방향으로 바꿔줌
inline int turnDirect() {
	if (!(p-W) || !p) dx*=-1;
	if (!(q-H) || !q) dy*=-1;
}

int main() {
	scanf("%d%d", &W, &H);
	scanf("%d%d", &p, &q);
	scanf("%d", &t);
	dx = dy = 1;
	while (t) {
		dist = min(t, goToBound(p, q));
		t -= dist;
		p += dx*dist;
		q += dy*dist;
		turnDirect();
	}
	printf("%d %d\n", p, q);
	return 0;
}



© 2020.08. by fbdp1202

Powered by theorydb