[SWEA]1940. 가랏! RC카!
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)
의외로 식을 만들면서 좀 생각해야했던 것이 현재 속력을 나타낼 변수와 최종 이동한 거리를 나타낼 변수를 생각하는 것이었습니다.
꼼꼼하고 간결하게 정리 할 수 있도록 해야겠습니다.
댓글남기기