-
백준: 개미 🐜코딩테스트 문제 풀이/백준 2023. 11. 29. 06:21
시간 제한이 0.15초였다 🥲
왜 이 문제를 골랐을까? 푸하핳
손을 댔으니 끝을 봐야겠지 😤
+ 괜한 고집부려서 속이 다 뒤집어졌다.ㅋㅋ..ㅋ... ... . .
이건 뭘까.. 이런 경우도 있구만? 다음부턴 java8로 진행해야겠다 😔
다른 사람 코드
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int w = scan.nextInt(); int h = scan.nextInt(); int p = scan.nextInt(); int q = scan.nextInt(); int t = scan.nextInt(); int x = (p + t) % (2 * w); int y = (q + t) % (2 * h); if (x > w) x = 2 * w - x; if (y > h) y = 2 * h - y; System.out.println(x + " " + y); } }
이 문제는 각 축을 수직선상으로 펼쳐놓고 생각하면 풀린다.
x 축 기준으로 보았을 때,
0에서 w 좌표 (벽이라고 칭하는)까지 길이가 w이고,
w 좌표에서 길이 w 만큼 되돌아오면 좌표는 0이 된다.
그렇다는 얘기는 0점으로 돌아오는데까지 걸리는 시간이 2 * w 라는 것.
현재위치 p 에서 시간 t만큼 수평으로 이동한 값을 (p + t) 라고 하면,
이 값을
2 * w
로 나눈 나머지가 개미의 최종 x좌표가 된다.그런데, 이 x 좌표는
2 * w
를 기준으로 구한 값이기 때문에, 벽에 부딪히고 돌아오는 중에 있었다면 x는 w보다 큰 값이다.따라서 이런 조건을 대비하여
if (x > w) x = 2 * w - x
와 같은 계산을 추가 해줘야 한다.'코딩테스트 문제 풀이 > 백준' 카테고리의 다른 글
백준: 소금폭탄 (0) 2023.11.28 백준: 문서 검색 (0) 2023.11.28 백준: 색종이 (0) 2023.11.25 백준: 바구니 순서 바꾸기 (0) 2023.11.24 백준: 2차원 배열의 합 (0) 2023.11.24