BOJ 6612 개미의 이동

LONGNEW·2022년 1월 18일
0

BOJ

목록 보기
302/333

https://www.acmicpc.net/problem/6612
시간 1초, 메모리 128MB

input :

  • L (1 ≤ L ≤ 99,999)(1 ≤ A ≤ L+1)
  • Xi 개미가 바라보고 있는 방향 (0 ≤ Xi ≤ L)(L: 왼쪽, R: 오른쪽)

output :

  • 각 테스트 케이스 마다, "The last ant will fall down in T seconds - started at P."를 출력한다.

T는 마지막 개미가 떨어진 시간, P는 그 개미가 시간 0 때 있었던 위치이다.
두 개미가 동시에 떨어지는 경우에는 "started at P and Q"를 출력한다. (P < Q)

조건 :

  • 개미는 1초에 1cm씩 앞으로 전진

  • 두 개미가 같은 곳에서 만나게 되면, 즉시 방향을 바꾸고 반대 방향으로 전진

  • 개미가 나무의 끝에 도착하게 되면, 개미는 땅으로 떨어지고


연관 문제

BOJ 3163 떨어지는 개미

위의 문제와 동일한 문제이다.
그러나 위치가 증가하는 순서가 아니기 때문에 이에 대한 정렬이 수행되어야 함.

출력시에는 동일한 속도로 이동해서 떨어지는 경우에만 2개를 비교해서 출력해야 함. 그 외의 경우에는 그냥 "-1"에 위치한 놈을 출력하면 됨.

import sys

while True:
    try:
        l, a = map(int, input().split())
        ids, left, right = [], [], []

        for _ in range(a):
            x, tow = sys.stdin.readline().split()
            x = int(x)
            ids.append(x)

            if tow == "L":
                left.append(x)
            else:
                right.append(l - x)

        ids.sort()
        left.sort()
        right.sort(reverse=True)

        move = left + right
        ans = [(move[i], ids[i]) for i in range(a)]

        ans.sort()
        if len(ans) >= 2 and ans[-1][0] == ans[-2][0]:
            p = min(ans[-1][1], ans[-2][1])
            q = max(ans[-1][1], ans[-2][1])
            print(f"The last ant will fall down in {ans[-1][0]} seconds - started at {p} and {q}.")
        else:
            print(f"The last ant will fall down in {ans[-1][0]} seconds - started at {ans[-1][1]}.")
    except EOFError:
        break

0개의 댓글