CodingTest/Baekjoon

[baekjoon] 백준 4307번(파이썬): 개미

JunJangE 2022. 2. 13. 13:10

문제

 

4307번: 개미

개미 여러 마리가 길이가 lcm인 막대 위에 있다. 각 개미의 이동 속도는 모두 일정하며, 1cm/s이다. 개미가 막대의 마지막까지 걸어간다면, 개미는 그 즉시 떨어지게 된다. 또, 두 개미가 만나게 된

www.acmicpc.net

알고리즘

- 모든 개미의 위치를 확인하면서 막대 기준 좌측과 우측에 가까운지 확인한다.

- 두 경우에서 개미가 가장 빠른 시간에 떨어질 경우와 가장 늦은 시간에 떨어질 경우를 구한다.

- 두 개미가 만났을 때 방향을 바꿔야 하는 경우는 신경 쓰지 않고 문제를 수행한다.(결국 개미의 번호가 없다면 두 개미는 가려고 하는 방향을 계속 가는 것이기 때문.)

코드

import sys


t = int(sys.stdin.readline())

for _ in range(t):
    l, n = map(int, sys.stdin.readline().split())
    ant = [int(sys.stdin.readline()) for _ in range(n)]
    f_ant = 0
    l_ant = 0

    # 모든 개미를 확인
    for i in ant:
        # 개미의 위치가 막대의 우측에 있다면
        if i > l - i:
            # 가장 빠른 시간에 떨어질 경우
            if f_ant < l - i:
                f_ant = l - i

            # 가장 늦은 시간에 떨어질 경우
            if l_ant < i:
                l_ant = i

        # 개미의 위치가 막대의 좌측에 있다면
        else:
            if f_ant < i:
                f_ant = i

            if l_ant < l - i:
                l_ant = l - i

    print(f_ant, l_ant)

github

 

GitHub - junjange/CodingTest: 내가 푼 코딩 테스트 문제와 해결법

내가 푼 코딩 테스트 문제와 해결법. Contribute to junjange/CodingTest development by creating an account on GitHub.

github.com