본문 바로가기

Algorithm

[SWEA] JAVA - 1940. 가랏! RC카!

오늘 배운것 : Java에서 switch문은 내부적으로 hash로 구현되어있기 때문에 switch가 if else 보다 월등히 빠르다. 

자동차의 현재 속도와 자동차의 총 이동거리를 누적한 변수들을 설정하여 이동거리 += (속도*1초) 로 풀었습니다.

 

여기서 현재속도 v보다 감속하는 속도가 더 클 경우에는 현재속도를 0으로 업데이트 시켜야 합니다. 

 

가속명령어가 들어왔을 경우 현재속도에 가속된 값을 더해줘야 합니다. 마지막으로 for문이 한번돌때마다 1초가 반영됐기 때문에 (자동차의 누적 이동 거리 += 자동차의 현재속도) 연산을 해주면 됩니다.

package com.ssafy.makeupclass;

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

public class SWEA_1940_가랏RC카 {
	
	//command 0 : 유지, 1 : 가속, 2 : 감속
	//감속값이 가속값보다 크면 속도값 = 0
	static int v; //현재 속도값
	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();
		
		int TC = Integer.parseInt(br.readLine());
		for (int t = 1; t <= TC; t++) {
			int total = 0; // 누적 거리
			int N = Integer.parseInt(br.readLine());
			//command
			v = 0;
			for (int c = 0; c < N; c++) {
				String[] data = br.readLine().split(" ");
				int command = Integer.parseInt(data[0]);
				if(command == 0) {
					total += v;
				}else if(command == 1) {
					v += Integer.parseInt(data[1]);
					total += v;
				}else {
					if(v < Integer.parseInt(data[1])) {
						v = 0;
						total += v;
					}else {
						v -= Integer.parseInt(data[1]);
						total += v;
					}
				}
			}
			sb.append("#").append(t).append(" ").append(total).append("\n");
		}//테스트케이스 끝
		
		System.out.print(sb);
	}
}