알고리즘/SW Expert Academy

1940. 가랏! RC카!

Junuuu 2022. 2. 24. 17:14
반응형

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PjMgaALgDFAUq 

 

SW Expert Academy

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

swexpertacademy.com

 

문제 해석

RC카의 속도를 증가, 감소, 유지 시키며 N초동안 이동한 거리를 계산하면 됩니다.

 

코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Solution_1940_가라RC카 {

	static final int INCREASE = 1;
	static final int DECREASE = 2;

	public static void main(String[] args) throws NumberFormatException, IOException {

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int T = Integer.parseInt(br.readLine());

		StringBuilder sb = new StringBuilder();
		for (int tc = 1; tc <= T; tc++) {

			int N = Integer.parseInt(br.readLine());

			int distance = 0, currentSpeed = 0;
			;
			for (int i = 0; i < N; i++) {

				String str = br.readLine();
				if (str.length() == 1) {// 현재 속도 유지
					distance += currentSpeed;
					continue;
				}

				// command가 0이 아닌 경우
				StringTokenizer st = new StringTokenizer(str, " ");
				int command = Integer.parseInt(st.nextToken());
				int speed = Integer.parseInt(st.nextToken());

				switch (command) {
				case INCREASE:// 가속
					currentSpeed += speed;
					break;
				case DECREASE:// 감속
					currentSpeed -= speed;
					currentSpeed = currentSpeed < 0 ? 0 : currentSpeed;
					break;
				}
				//속도조절 후 거리계산
				distance += currentSpeed;

			}

			sb.append("#" + tc + " " + distance + "\n");
		}
		System.out.println(sb);
	}

}