inblog logo
|
LHS's Study Space
    알고리즘문제풀기랜덤마라톤

    [랜덤 마라톤] 레이저 쏘기(27499)

    lhs's avatar
    lhs
    Dec 31, 2024
    [랜덤 마라톤] 레이저 쏘기(27499)
    Contents
    1. 문제 풀이 아이디어2. 나의 정답 코드3. 정리
    www.acmicpc.net
    https://www.acmicpc.net/problem/27499
    notion image
    notion image

    1. 문제 풀이 아이디어

    • 반사되는 좌표를 계산하여 해당 기울기를 맵에 저장하는 방식으로 문제를 해결할 수 있다.

    2. 나의 정답 코드

    public class Main { public static void main(String[] args) throws IOException { BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer stringTokenizer = new StringTokenizer(bufferedReader.readLine()); int n = Integer.parseInt(stringTokenizer.nextToken()); int m = Integer.parseInt(stringTokenizer.nextToken()); int k = Integer.parseInt(stringTokenizer.nextToken()); Map<Double, Integer> map = new HashMap<>(); int result = 0; for (int i = 0; i < n; i++) { stringTokenizer = new StringTokenizer(bufferedReader.readLine()); int x = Integer.parseInt(stringTokenizer.nextToken()); int y = Integer.parseInt(stringTokenizer.nextToken()); for (int j = 0; j < k; j++) { double kx = j % 2 == 0 ? m * j + x : (j + 1) * m - x; int count = map.getOrDefault(y / kx, 0) + 1; map.put(y / kx, count); result = Math.max(result, count); } } System.out.println(result); bufferedReader.close(); } }

    3. 정리

    • 입력을 처리하며, 최대 k번 반복하여 벽에서 반사된 좌표를 계산해 kx에 저장한다.
    • 해당 좌표의 기울기를 맵에서 찾아 값에 1을 더한 후, 결과값과 비교해 갱신한다.
    • 모든 입력을 처리한 뒤 최종 결과값을 출력하여 문제를 해결한다.
    Share article
    Contents
    1. 문제 풀이 아이디어2. 나의 정답 코드3. 정리

    LHS's Study Space

    RSS·Powered by Inblog