anott
기록
anott
  • 분류 전체보기
    • 오라클
    • SQL
    • 알고리즘
      • 백준저지
      • 프로그래머스
      • SWEA
    • 개발 관련
    • 프론트엔드
      • TypeScript, Next.js
      • React 공식문서 읽기
hELLO · Designed By 정상우.
anott

기록

백준저지 10158번 개미
알고리즘/백준저지

백준저지 10158번 개미

2021. 9. 8. 23:32

출처: https://www.acmicpc.net/problem/10158

 

10158번: 개미

가로 길이가 w이고 세로 길이가 h인 2차원 격자 공간이 있다. 이 격자는 아래 그림처럼 왼쪽 아래가 (0,0)이고 오른쪽 위가 (w,h)이다. 이 공간 안의 좌표 (p,q)에 개미 한 마리가 놓여있다. 개미는 오

www.acmicpc.net

 

 

생각

개미를 한 칸씩 이동하도록 생각하면 시간 초과가 난다. 개미가 벽에 부딪힐 때까지 이동시켜도 시간 초과가 난다.

개미 이동을 x축과 y축 각각 따로 생각했다. 개미는 결국 입력받은 시간만큼 x축으로 또는 y축으로 이동한다. 다만 벽에 닿았을 때는 방향이 반대로 바뀌기 때문에 가로와 세로의 2배를 곱해서 계산했다.

 

이전에는 StringBuilder로 모아서 마지막에 출력했다. 그때 자바11로 통과되긴 했지만 재채점되면서 시간 초과가 났다. 그래서 이번에는 시간을 아끼기 위해 매번 바로바로 출력했다. 그랬는데도 자바11은 시간 초과가 났다.

대신 자바8은 통과했는데... 조금 더 좋은 방법을 생각해봐야 할 것 같다.

 

 

 

코드 (자바8만 통과)

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
import java.io.IOException;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringTokenizer st = new StringTokenizer(br.readLine(), " ");
        int w = Integer.parseInt(st.nextToken());
        int h = Integer.parseInt(st.nextToken());
        st = new StringTokenizer(br.readLine());
        int x = Integer.parseInt(st.nextToken());
        int y = Integer.parseInt(st.nextToken());
        int t = Integer.parseInt(br.readLine());

        x = (x + t) % (w * 2);
        y = (y + t) % (h * 2);
        if (x >= w) {
            bw.write((w * 2) - x + " ");
        } else {
            bw.write(x + " ");
        }
        if (y >= h) {
            bw.write(((h * 2) - y) + "\n");
        } else {
            bw.write(y + "\n");
        }
        bw.flush();
        bw.close();
    }
}

 

저작자표시 비영리

'알고리즘 > 백준저지' 카테고리의 다른 글

백준저지 9095번 1, 2, 3 더하기  (0) 2021.09.14
백준저지 3085번 사탕 게임  (0) 2021.09.10
백준저지 1244번 스위치 켜고 끄기  (0) 2021.09.04
백준저지 12927번 배수 스위치  (0) 2021.09.03
백준저지 14889번 스타트와 링크  (0) 2021.09.02
    '알고리즘/백준저지' 카테고리의 다른 글
    • 백준저지 9095번 1, 2, 3 더하기
    • 백준저지 3085번 사탕 게임
    • 백준저지 1244번 스위치 켜고 끄기
    • 백준저지 12927번 배수 스위치
    anott
    anott

    티스토리툴바