SWEA 1940 가랏! RC카! D2 (자바 Java)

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

Leave a Comment