Today
-
Yesterday
-
Total
-
  • 백준: 개미 🐜
    코딩테스트 문제 풀이/백준 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

Designed by Tistory / Custom by 얼거스