1 분 소요

1940.가랏! RC카!

문제

RC카의 이동거리를 계산해야합니다.

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

가속과 감속의 경우 가속도의 값이 추가로 주어집니다.

입력으로 주어진 N초 동안 이동한 거리를 계산하는 프로그램을 작성해야 합니다.

제약사항을 읽어보면 N은 2이상 30이하의 정수이며 가속도의 값은 1 혹은 2입니다. 또한 현재 속도보다 감속할 속도가 더 크다면, 속도는 0이 됩니다.


생각해보기

입력으로 N초와 속도가 주어집니다.

매초 출력됩니다. 그렇다면 1 2 2 1이라면 2만큼 가속했다가 1만큼 감속하는 겁니다. 그러면 3m갑니다.

N = 3일 때를 보겠습니다. 1 1 0 1 1 3초동안 1만큼 가속 했다가 현재 속도를 유지하고 1만큼 가속합니다.

그러면 1m+ 1m +(1+1)m = 4m입니다.

다른 예제를 더 해보면N = 5일 때는 1 2 1 2 2 1 0 0 입니다. 2로가다가 4로가고 3으로 간 다음 5초가지 3을 유지합니다.

2 + 4+ 3+ 3+3 = 15m입니다.

이를 식으로 나타내려면 어떻게 해야할까요?

N을 우선 받은 다음, 조건 문을 사용해서 1, 2, 0을 구별합니다.

속력 = 0으로 주고 만약 1(가속)일 경우 주어진 속력이 현재 속력이 됩니다. 속력 += 주어진 속력합니다. 만약 2(감속)이 나오면 현재 속도에서 감속할 수를 빼주는데 추가적으로 그 수가 0보다 커야한다는 조건을 달아주고 현재속도 - 주어진 속도를 해줍니다. 만약 0보다 작다면 현재속도는 0이 됩니다. 마지막으로 0일 때 현재속도는 자기 자신을 더합니다.

풀어보기

T = int(input())
for tc in range(1, T+1):
    answer = 0
    now = 0
    for i in range(int(input())):
        speed = list(map(int,input().split()))
        if speed[0] == 1:
            now = now + speed[1]
            answer += now
        elif speed[0] == 2:
            now = now - speed[1]
            if now < 0:
                now = 0
            else:
                answer += now 
        elif speed[0] == 0:
            answer += now
    print(f'#{tc}', answer)
              

의외로 식을 만들면서 좀 생각해야했던 것이 현재 속력을 나타낼 변수와 최종 이동한 거리를 나타낼 변수를 생각하는 것이었습니다.

꼼꼼하고 간결하게 정리 할 수 있도록 해야겠습니다.

카테고리:

업데이트:

댓글남기기