just inside
[SWEA/D2] 1940. 가랏! RC카! 본문
[문제 링크]
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PjMgaALgDFAUq
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
[문제 설명]
RC (Radio Control) 카의 이동거리를 계산하려고 한다.
입력으로 매 초마다 아래와 같은 command 가 정수로 주어진다.
0 : 현재 속도 유지.
1 : 가속
2 : 감속
위 command 중, 가속(1) 또는 감속(2) 의 경우 가속도의 값이 추가로 주어진다.
가속도의 단위는, m/s2 이며, 모두 양의 정수로 주어진다.
입력으로 주어진 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/s2 혹은 2 m/s2 이다.
3. 현재 속도보다 감속할 속도가 더 클 경우, 속도는 0 m/s 가 된다.
[입력]
입력은 첫 줄에 총 테스트 케이스의 개수 T, 다음 줄부터 각 테스트 케이스가 주어진다.
테스트 케이스 첫 줄에는 Command 의 수 N이 주어지고, 둘째 줄부터, 매 줄마다 각각의 Command가 주어진다.
[출력]
테스트 케이스 t에 대한 결과는 “#t”을 찍고, 한 칸 띄고, 정답을 출력한다.
(t는 테스트 케이스의 번호를 의미하며 1부터 시작한다.)
제출 코드
t = int(input())
for i in range(1, t+1):
n = int(input())
# 입력받은 명령어 모두 저장
cmds = [list(map(int, input().split())) for _ in range(n)]
spd = 0 # 현재 속도
dist = 0 # 이동 거리
for cmd in cmds:
if cmd[0] == 0: # 현재 속도 유지
dist += spd
elif cmd[0] == 1: # 가속
spd += cmd[1] # 입력 속도만큼 가속
dist += spd
else: # 감속
spd -= cmd[1] # 입력 속도만큼 감속
if spd < 0: # 속도가 0보다 작아지면 0으로 저장
spd = 0
dist += spd
print('#'+str(i), dist)
풀이
- 조건에 맞게 속도를 갱신해서 거리에 더해주면 된다.
- 문제가 살짝 잘못 표현된 듯.
- 커맨드는 N개이고, N초 동안 이동한 거리를 계산하게 되므로 각 초마다 해당 커맨드로 인해 갱신된 속도만큼 이동하게 된다.
- 따라서 이동거리를 구하려면 그냥 전체 이동거리에 현재 속도를 더해주면 된다.
알아둘 사항
'coding test > SWEA' 카테고리의 다른 글
[SWEA/D2] 1946. 간단한 압축 풀기 (0) | 2024.10.31 |
---|---|
[SWEA/D2] 1945. 간단한 소인수분해 (0) | 2024.10.31 |
[SWEA/D2] 1926. 간단한 369게임 (0) | 2024.10.31 |
[SWEA/D2] 1859. 백만 장자 프로젝트 (0) | 2024.10.31 |
[SWEA/D2] 1284. 수도 요금 경쟁 (1) | 2024.10.31 |