본문으로 건너뛰기

21557 - 불꽃놀이

정보
  • 문제 보기: 21557 - 불꽃놀이
  • 소요 시간: 6분 44초
  • 풀이 언어: java
  • 체감 난이도: 1️⃣~2️⃣
  • 리뷰 횟수: ✅

풀이 키워드

스포주의

그리디


풀이 코드

정보
  • 메모리: 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) 해주었다.


메모

  • 다시 안풀어도 됨