1940号(出発!RCCA!)


質問元:https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PjMgaALgDFAUq&categoryId=AV5PjMgaALgDFAUq&categoryType=CODE&problemTitle=1940&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=&pageSize=10&pageIndex=1&&&&&&&&&
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Solution {

	public static void main(String[] args) throws IOException {
		StringBuilder sb = new StringBuilder();
		BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
		int T = Integer.parseInt(reader.readLine()); // 테케 개수
		
		for (int i = 0; i < T; i++) {
			int N = Integer.parseInt(reader.readLine()); // 명령 수
			int speed = 0;
			int distance = 0;
			for (int j = 0; j < N; j++) {
				StringTokenizer tokenizer = new StringTokenizer(reader.readLine());
				
				switch (Integer.parseInt(tokenizer.nextToken())) {
					case 1: // 가속
						speed += Integer.parseInt(tokenizer.nextToken());
						distance += speed;
						break;
						
					case 2: // 감속
						speed = Math.max(0, speed - Integer.parseInt(tokenizer.nextToken()));
						distance += speed;
						break;
						
					case 0: // 유지
						distance += speed;
						break;
				}
			}
			
			sb.append("#").append(i + 1).append(" ");
			sb.append(distance).append("\n");
		}
		
		System.out.println(sb);
	}

}
  • 最初は問題がよく理解できず、余計な問題でした.
  • 題自体は簡単です.加速すれば、それに応じて速度を増やせばいい、減速すれば、それに応じて減速すればいい.すべてのコマンドは1秒単位で入力されるため、各コマンドの移動距離は速度と等しい.スピードを求めて、それを加えればいいです.