21557 - 불꽃놀이
info
- 문제 보기: 21557 - 불꽃놀이
- 소요 시간: 6분 44초
- 풀이 언어:
java
- 체감 난이도: 1️⃣~2️⃣
- 리뷰 횟수: ✅
풀이 키워드
스포주의
그리디
풀이 코드
info
- 메모리: 37788 KB
- 시간: 296 ms
import java.util.*;
import java.io.*;
public class Main
{
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
String[] line = br.readLine().split(" ");
int a = Integer.parseInt(line[0]);
int b = Integer.parseInt(line[line.length-1]);
for (int i = 0; i < n-3; ++i) {
if (a > b) --a;
else --b;
}
System.out.println(Math.max(a-1, b-1));
}
}
풀이 해설
이래저래 말이 많지만 핵심은 가운데 묶음들은 다 날라가고
결국엔 양 끝 묶음만 남는데 이를 최소로 남기고 싶다는 뜻이다.
그래서 양 끝 개수인 2에다 1을 더 빼서 n-3번만큼 더 큰 쪽의 묶음을 1씩 깎고
맨 마지막엔 양쪽 다 1씩 깎이기에 Math.max(a-1, b-1)
해주었다.
메모
- 다시 안풀어도 됨