Stay Hungry Stay Foolish

SWEA

[SWEA] 1940. 가랏! RC카! (Python/D2)

dev스카이 2024. 11. 10. 22:15

[문제 링크] 👇

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com


풀이 방법

입력 설명

3  # 명령어 개수
1 2  # 명령어, 속도
2 1
0
  • 명령어 개수가 3일 때, 그 다음줄부터 3번의 명령이 주어진다.
  • 명령어가 1 혹은 2일 때 추가로 속력이 주어지고, 0일 때는 주어지지 않는다.

예시

5 
1 2 
1 2 
2 1
0
0

  1. 첫 줄 명령어가 1이므로, 2만큼 가속한다. 그래서 현재 속도은 2이다.
  2. 두 번째 줄 명령어가 1이므로, 2만큼 가속한다. 현재 속력 + 가속도 = 2 + 2 = 4이다. 따라서 현재 속도는 4이다. 
  3. 세 번째 줄 명령어가 2이므로, 1만큼 감속한다. 현재 속력 4에서 감속할 속도 1을 뺀다. 그래서 현재 속도는 3이다.
  4. 네 번째 줄 명령어가 0이므로, 현재 속도를 유지한다. 따라서 현재 속도는 여전히 3이다.
  5. 다섯 번째 줄 명령어가 0이므로, 위와 같다.

현재 속도는 1초당 이동한 거리이다. 따라서 1번부터 5번까지의 현재 속도를 다 더해주면 총 이동한 거리가 나온다. 

Solution

T = int(input())  # 테스트 케이스 수
for test_case in range(1, T + 1):
    command = int(input())  # 커맨드 수
    result = 0
    now = 0 # 현재 속도
    for _ in range(command):
        com = list(map(int, input().split()))
        if len(com) == 2:  # 명령어가 1 or 2 일 때
            if com[0] == 1:  # 1일 때
                now += com[1]
            else:  # 2일 때
                if now < com[1]:  # 현재 속도보다 감속할 속도가 더 클 경우
                    now = 0
                else:
                    now -= com[1]
        result += now

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

 

 


👩‍💻 회고

문제 이해하는데만 20분 소요.. 문제만 잘 이해하면 쉽게 풀린다.