문제 : boj17756
우선 NIESTETY 를 출력해야 하는 경우부터 살펴보자. 결국 n개에 대해 가장 큰 짝수를 구해야 하는데, 짝수로 만들 수 없다는 얘기는 n이 1개였고, 그 한개가 홀수인 경우 밖에 없다.
이제 전체 로직을 살펴보자. 짝수를 만들 수 있는 경우를 살펴보면 된다. 우선 짝수+짝수는 당연히 짝수이다. 홀수+홀수도 역시 짝수이다. 따라서 짝수는 그냥 넘어가면 되고, 홀수는 홀수인 것이 짝수개 있다면 짝수로 만드는데 문제가 없다. 이제 문제는 홀수가 홀수개 있는 경우인데, 이 때는 한 개의 수를 제외해야 한다. 당연히 가장 작은 홀수를 제거하는 것이 이득일 것이다.
최종적으로 전체 로직을 살펴보면 다음과 같다.
코드 : github
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
private void solution() throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int evenSum = 0;
int oddSum = 0;
int minOdd = Integer.MAX_VALUE;
int oddCnt = 0;
StringTokenizer st = new StringTokenizer(br.readLine());
while (n-->0) {
int cur = Integer.parseInt(st.nextToken());
if ((cur&1)==0) {
evenSum+=cur;
continue;
}
oddCnt++;
oddSum+=cur;
if (cur<minOdd) minOdd=cur;
}
if ((oddCnt&1)==1) oddSum-=minOdd;
if (oddCnt == 1 && evenSum == 0) {
System.out.println("NIESTETY");
return;
}
System.out.println(evenSum+oddSum);
}
public static void main(String[] args) throws Exception {
new Main().solution();
}
}
'PS > BOJ' 카테고리의 다른 글
백준 13537 자바 - 수열과 쿼리 1 (BOJ 13537 JAVA) (0) | 2022.03.25 |
---|---|
백준 1417 자바 - 국회의원 선거 (BOJ 1417 JAVA) (0) | 2022.03.24 |
백준 2003 자바 - 수들의 합 2 (BOJ 2003 JAVA) (0) | 2022.03.23 |
백준 1707 자바 - 이분 그래프 (BOJ 1707 JAVA) (0) | 2022.03.22 |
백준 18384 자바 - PRIM (BOJ 18384 JAVA) (0) | 2022.03.22 |
댓글