티스토리 뷰
[BJ] 10158. 개미
1. 반복문을 돌리며 한칸씩 개미를 움직이면 시간 초과가 난다. 반복되는 구간을 모듈러 연산으로 제거한 후 나머지 시간 동안만 움직이면 된다.
2. 실제 자바 2차원 배열의 인덱스를 움직이며 값을 계산하는게 아니기 때문에. 수학 좌표 위 x, y축의 값을 움직인다. 따라서 45도 방향으로 가는 개비의 y값을 -1하지 않고 +1 해야 한다.
import java.io.*;
import java.util.*;
// 210225
// https://www.acmicpc.net/problem/10158
public class Main_BJ_10158_개미 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int w = sc.nextInt();
int h = sc.nextInt();
int x = sc.nextInt();
int y = sc.nextInt();
int t = sc.nextInt(); // 초
// 우로 w초, 좌로 w초, 총 2w초 후에 개미의 x 위치는 초기 위치와 같다.
// => 따라서 2w초 가고난 나머지 시간에 이동한 위치만 계산해준다.
int tx = t % (2*w);
// 위로 h초, 아래로 h초, 총 2h초 후에 개미의 y 위치는 초기 위치와 같다.
int ty = t % (2*h);
int d=1;
for(int i=0; i<tx; i++) {
if (x==w || x==0) d*=-1; // 위나 바닥에 닿으면 방향 전환
x += d;
}
d=1;
for(int i=0; i<ty; i++) {
if (y==h || y==0) d*=-1; // 위나 바닥에 닿으면 방향 전환
y += d;
}
System.out.println(x + " " + y);
sc.close();
} // main
}
'코딩테스트 > 백준' 카테고리의 다른 글
[BJ] 17413. 단어 뒤집기2 (0) | 2021.02.26 |
---|---|
[BJ] 1244. 스위치 켜고 끄기 (0) | 2021.02.26 |
[BJ] 13300번: 방 배정 (0) | 2021.02.22 |
[BJ] 2108. 통계학 (0) | 2021.02.15 |
[BJ] 1012. 유기농 배추 (0) | 2021.02.15 |
댓글