문제
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
'Problem Solving > SWEA' 카테고리의 다른 글
[SWEA-1284][Python] 수도 요금 경쟁 (1) | 2023.10.23 |
---|---|
[SWEA-1285][C++] 아름이의 돌 던지기 (0) | 2023.10.23 |
[SWEA-1288][Python] 새로운 불면증 치료법 (1) | 2023.10.23 |
[SWEA-1928][Python] Base64 Decoder (0) | 2023.10.23 |
[SWEA-1945][Python] 간단한 소인수분해 (1) | 2023.10.19 |
[SWEA-1946][Python] 간단한 압축 풀기 (1) | 2023.10.19 |
[SWEA-1948][Python] 날짜 계산기 (1) | 2023.10.19 |
[SWEA-1954][Python] 달팽이 숫자 (1) | 2023.10.18 |