SWEA 1940 가랏! RC카!
문제 정보
- 문제 출처 : SW Expert Academy
- 문제 번호 : 1940
- 문제 제목 : 가랏! RC카!
- 문제 난이도 : D2
- 풀이 언어 : Java
문제
RC카의 이동거리를 계산하려 하는데, 입력으로 매 초마다 command 가 정수로 주어진다.
0 : 현재 속도 유지. 1 : 가속 2 : 감속
가속과 감속의 경우 가속도의 값이 추가로 주어진다.
입력으로 주어진 N개의 command 를 모두 수행했을 때, N 초 동안 이동한 거리를 계산하는 문제
접근
반복문과 조건문으로 문제를 해결하였다.
풀이
- RC카의 초기 속도는 0이며, 테스트 케이스마다 RC카의 이동 거리를 계산합니다.
- 각 테스트 케이스는 여러 개의 명령어로 구성되어 있습니다.
- 명령어는 세 가지 유형이있습니다. 0은 현재 속도 유지, 1은 가속, 2는 감속을 의미합니다.
- 가속 또는 감속 명령의 경우, 속도의 변화량이 주어집니다.
- 가속 명령어(1)를 받으면, RC카의 속도를 주어진 값만큼 증가시킵니다.
- 감속 명령어(2)를 받으면, RC카의 속도를 주어진 값만큼 감소시킵니다.
- RC카의 속도는 음수가 될 수 없으므로, 속도가 음수가 되려고 하면 0으로 조정합니다.
- 각 명령어마다 RC카의 이동 거리를 현재 속도에 따라 계산하고, 총 이동 거리에 더합니다.
- 각 테스트 케이스의 총 이동 거리를 출력합니다.
후기
생각보다 쉽게 풀었던 문제지만, 비슷한 유형의 문제들을 더 풀어볼 계획이다.
코드
Java
import java.util.Scanner;
import java.io.FileInputStream;
class Solution
{
public static void main(String args[]) throws Exception
{
Scanner sc = new Scanner(System.in);
int T;
T=sc.nextInt();
for(int test_case = 1; test_case <= T; test_case++)
{
int N = sc.nextInt();
int speed = 0;
int distance = 0;
for(int i = 0; i < N; i++) {
int command = sc.nextInt();
if (command != 0) {
int change = sc.nextInt();
if (command == 1) {
speed += change;
} else if (command == 2) {
speed -= change;
if (speed < 0) speed = 0;
}
}
distance += speed;
}
System.out.println("#" + test_case + " " + distance);
}
}
}
Java