티스토리 뷰
1. 문제
https://www.acmicpc.net/problem/20300
20300번: 서강근육맨
PT 첫째 날에 $1$과 $4$를 선택하고, 둘째 날에 $2$와 $3$을 선택하고, 마지막 날에 $5$를 선택하면 $M$은 $5$가 되며, 이때가 $M$이 최소일 때이다.
www.acmicpc.net
2. 문제 이해
숫자를 2개씩 짝 지어서(운동기구 별 근손실 값) 최대로 큰 값중 최소값
이해해보면
1 2 3 4 5
1+2 = 3 / 3+4 = 7 /5 잖아 그럼 근손실이 가장 큰 값이 7
1+3 = 4 / 2+4 = 6 / 5 이러면 근손실이 가장 큰 값이 6
1+4 = 5 / 2+3 = 5 / 5 이러면 근손실이 가장 큰 값이 5
그럼 근손실 M 은 5가 답
즉, 근손실중 큰 값에서 최소로 만들 수 있는 근손실을 구하는 것
3. 풀이 방법
1. 나는 짝수 일 경우, 홀수 경우 나눠서 판단해줬다.
2. 근손실 값들 입력받고 정렬을 해줬다.
그 이유는 첫번째는 무조건 작아야하고, 마지막 수랑 짝지어주기 위해서 해줬다.
어떤 경우의 수도 제일 최대값에 제일 최소값을 더해주면 나올 수 있는 경우 중 제일 작기 때문이다!
3. 짝수일 경우 -> arr[0] + arr[N-1] arr[1] + arr[N-2] ... 이렇게 진행
4. 홀수일 경우 -> 맨 마지막 수를 max 값을 두고, 이제 짝수 방식과 똑같이 0번째와 맨 마지막수의 전수 더해서 비교해줘서 제일 큰 값 구해주기!!!!
4. 코드
package net.acmicpc.solution;
import java.util.*;
import java.io.*;
public class Solution_20300_서강근육맨 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
long[] arr = new long[N];
StringTokenizer st = new StringTokenizer(br.readLine());
for (int i = 0; i < N; i++) {
arr[i] = Long.parseLong(st.nextToken());
}
Arrays.sort(arr);
long max = Long.MIN_VALUE;
if (arr.length % 2 == 0) { // 짝수 일경우
for (int i = 0; i < (N / 2) + 1; i++) {
long sum = arr[i] + arr[N - i - 1];
max = Math.max(sum, max);
}
} else {
max = arr[N - 1];
for (int i = 0; i < (N / 2) + 1; i++) {
long sum = arr[i] + arr[N - i - 2];
max = Math.max(sum, max);
}
}
System.out.println(max);
}
}
피드백은 언제나 환영입니다 :) 🌳
'algo > 백준' 카테고리의 다른 글
[백준] 1912_연속합 (JAVA) (0) | 2022.09.19 |
---|---|
[백준] 20055_컨베이어 벨트 위의 로봇(JAVA) (2) | 2022.09.19 |
[백준] 19948_음유시인 영재 (JAVA) (0) | 2022.07.08 |
[백준] 12933_오리 (JAVA) (0) | 2022.06.27 |
[백준] 16439_치킨치킨치킨 🍗 (JAVA) (2) | 2022.06.26 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 메서드형 void
- Java 멀리 뛰기
- HashMap 자바
- 마법사상어와 파이어볼
- 프론트엔드
- 1개 Key 여러개 Value
- AI캠프
- java 멀티버스
- 정보통신산업진흥원
- JAVA 할인행사
- 서울ICT이노베이션
- 멀티버스 java
- AI-WEB 교육
- 멀리 뛰기 자바
- JAVA 컬랙션
- 18868 멀티버스 java
- 프로그래머스 롤케이크자르기
- 플그 멀리 뛰기
- 자바 return
- NIPA
- java 마법사 상어와 파이어볼
- 백준 멀티버스 자바
- 백엔드
- IT개발캠프
- AI교육
- 16234 마법사 상어와 파이어볼
- level2 롤케이크 자르기
- 할인행사 자바
- 프로그래머스 할인행사
- 유데미
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함