[백준 29891] 체크포인트 달리기 [Java]

2025. 10. 11. 17:03PS 풀이/Baekjoon Online Judge

문제

http://boj.ma/29891

 

29891번: 체크포인트 달리기

 

boj.ma

 


풀이

문제 요약

주어진 N개의 체크포인트 중 한 번에 최대 K개씩 체크할 수 있을 때, 모두 왕복하기 위한 최소 이동 비용을 구하자.

아이디어

주어진 모든 체크포인트를 들러야하므로, 절댓값이 큰 체크포인트부터 K개의 체크포인트를 체크하며 왕복해, 전체 이동 비용을 낮춰야 한다.

양수/음수는 따로 계산해야한다는 점에 유의하자.

		// Solve
		Arrays.sort(A);
		long sum = 0;
		for (int i = 0; i < N && A[i] < 0; i += K) {
			sum += (-A[i]);
		}
		for (int i = N - 1; i >= 0 && A[i] > 0; i -= K) {
			sum += A[i];
		}

		// Output
		System.out.println(sum * 2);

풀이 시간

10분


소스코드

https://github.com/rogi-rogi/problem-solving/blob/main/baekjoon-online-judge/easy/29891.java

 

problem-solving/baekjoon-online-judge/easy/29891.java at main · rogi-rogi/problem-solving

Daily Problem Solving Challenges. Contribute to rogi-rogi/problem-solving development by creating an account on GitHub.

github.com