728x90
728x90

문제

RC (Radio Control) 카의 이동거리를 계산하려고 한다.

입력으로 매 초마다 아래와 같은 command 가 정수로 주어진다.

0 : 현재 속도 유지.
1 : 가속
2 : 감속

위 command 중, 가속(1) 또는 감속(2) 의 경우 가속도의 값이 추가로 주어진다.

가속도의 단위는, m/s 이며, 모두 양의 정수로 주어진다.

입력으로 주어진 N 개의 command 를 모두 수행했을 때, N 초 동안 이동한 거리를 계산하는 프로그램을 작성하라.

RC 카의 초기 속도는 0 m/s 이다.

 

예제

아래 예제 입력에서 정답은 3 이 된다.

입력         시간     RC 카의 속도 RC     카의 이동거리
1 2          1 sec          2 m/s                    2 m
2 1          2 sec          1 m/s                    3 m

 

제약 사항

1. N은 2 이상 30 이하의 정수이다. (2 ≤ N ≤ 30)
2. 가속도의 값은 1 m/s 혹은 2 m/s 이다.
3. 현재 속도보다 감속할 속도가 더 클 경우, 속도는 0 m/s 가 된다.

 

입력

입력은 첫 줄에 총 테스트 케이스의 개수 T, 다음 줄부터 각 테스트 케이스가 주어진다.
테스트 케이스 첫 줄에는 Command 의 수 N이 주어지고, 둘째 줄부터, 매 줄마다 각각의 Command가 주어진다.

 

출력

테스트 케이스 t에 대한 결과는 “#t”을 찍고, 한 칸 띄고, 정답을 출력한다.
(t는 테스트 케이스의 번호를 의미하며 1부터 시작한다.)

 

예제

[입력] [출력]
10
2
1 2
2 1
3
1 1
0
1 1
5
1 2
1 2
2 1
0
0
#1 3
#2 4
...

 

문제 해결 방법

  • 문제를 이해하면 쉽게 풀 수 있었던 문제였다.
  • 명령에 따라 속도(@speed@)를 다르게 설정해주고, 현재 속도보다 감속할 속도가 더 클 경우 속도(@speed@)를 @0@으로 설정해주어야 한다.
N = int(input())

distance = 0    # 이동 거리
speed = 0    # 이동 속도

for i in range(N):
    input_string = input()

    command = int(input_string.split()[0])

    if command == 0:    # 속도 유지
        new_speed = 0
        speed += new_speed
    elif command == 1:    # 가속
        new_speed = int(input_string.split()[1])
        speed += new_speed
    elif command == 2:    # 감속
        new_speed = int(input_string.split()[1])

        # 현재 속도보다 감속할 속도가 더 클 경우
        if speed < new_speed:
            new_speed = 0

        speed -= new_speed

    distance += speed

 

코드

T = int(input())

for test_case in range(1, 1 + T):
    N = int(input())

    distance = 0    # 이동 거리
    speed = 0    # 이동 속도

    for i in range(N):
        input_string = input()

        command = int(input_string.split()[0])

        if command == 0:    # 속도 유지
            new_speed = 0
            speed += new_speed
        elif command == 1:    # 가속
            new_speed = int(input_string.split()[1])
            speed += new_speed
        elif command == 2:    # 감속
            new_speed = int(input_string.split()[1])

            # 현재 속도보다 감속할 속도가 더 클 경우
            if speed < new_speed:
                new_speed = 0

            speed -= new_speed
        
        distance += speed

    print(f"#{test_case} {distance}")

 

참고

  • 난이도: D2
728x90
728x90