오늘 배운것 : 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);
}
}
'Algorithm' 카테고리의 다른 글
[백준] JAVA - 1158.요세푸스 문제 (0) | 2021.02.09 |
---|---|
[SWEA] JAVA - 9229. 한빈이와 Spot Mart (0) | 2021.02.08 |
[SWEA] JAVA - 5215 햄버거 다이어트 (0) | 2021.02.08 |
[SWEA] JAVA - 1861 정사각형방 (0) | 2021.02.08 |
[SWEA] JAVA - 3499 퍼펙트 셔플 (0) | 2021.02.06 |