본문 바로가기
알고리즘 & 자료구조/백준

백준 21758

by 신재권 2023. 7. 25.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

class Main21758 {

   public static void main(String[] args) throws Exception {
      BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
      int N = Integer.parseInt(br.readLine());

      int[] honey = new int[N + 1];
      int[] sum = new int[N + 1];
      StringTokenizer st = new StringTokenizer(br.readLine());

      for (int i = 1; i <= N; i++) {
         honey[i] = Integer.parseInt(st.nextToken());
         sum[i] = honey[i] + sum[i - 1];
      }

      int answer = 0;

      //벌1(고정), 벌2(이동), 벌통(고정)
      for (int i = 2; i < N; i++) {
         int bee1 = sum[N] - honey[1] - honey[i]; //합 - 자기 위치 - 두번째 벌 위치
         int bee2 = sum[N] - sum[i]; // 합 - 출발 위치까지 누적합 = 남은 이동거리 꿀 합
         int tmp = bee1 + bee2;
         answer = Math.max(answer, tmp);
      }

      //벌(고정), 벌통, 벌(고정)
      for (int i = 2; i < N; i++) {
         int bee1 = sum[i] - honey[1];
         int bee2 = sum[N - 1] - sum[i - 1];
         int tmp = bee1 + bee2;
         answer = Math.max(answer, tmp);
      }

      //벌통(고정), 벌1(이동), 벌2(고정)
      for (int i = 2; i < N; i++) {
         int bee1 = sum[i - 1];
         int bee2 = sum[N - 1] - honey[i];  //벌2는 N위치에 고정이니 N-1까지의 합에서 첫번째 벌의 위치 꿀을 제외해주면 된다.
         int tmp = bee1 + bee2;
         answer = Math.max(answer, tmp);
      }

      System.out.println(answer);
   }
}

'알고리즘 & 자료구조 > 백준' 카테고리의 다른 글

백준 2138  (0) 2023.07.26
백준 17615  (0) 2023.07.26
백준 1931  (0) 2023.07.25
백준 1080  (0) 2023.07.24
백준 11501  (0) 2023.07.24