happy coding
[java] 28062. 준석이의 사탕 사기 본문
돈 많은 준석이가 동생을 위해 사탕을 사는구나.. 누나도 반포 자이 한 채를 가득채우는 사탕을 가지고 싶단다.
import java.io.*;
import java.lang.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
//사탕 묶음의 개수인 n을 입력 받음
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int[] arr = new int[n];
//각각의 사탕 묶음에 담겨 있는 사탕의 개수를 입력받음
StringTokenizer st = new StringTokenizer(br.readLine());
for (int i=0 ; i<arr.length ; i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
//test.사탕 개수 확인
System.out.println(Arrays.toString(arr));
/*
홀수는 크기 순으로 정렬해서 내림차순으로 훑으면서 홀수 개의 사탕 묶음이 두 개를 볼 때마다 그 두개를 합쳐 결과에 저장
*/
//배열 오름차순 정렬
Arrays.sort(arr);
//홀수 개의 사탕 묶음이 두 개씩 나오면 두 개를 합쳐줌
for (int i= n-1 ; i >0;i-=2) {
if (arr[i]%2 == 1 && arr[i-1]%2 ==1) {
arr[i-1] += arr[i];
}
}
//최대로 가져갈 수 있는 사탕의 개수 출력
int sum = 0;
for (int i=0 ; i<arr.length ;i++) {
sum += arr[i];
}
if (sum % 2 == 0) {
System.out.println(sum);
} else {
System.out.println(0);
}
}
}
아무 생각없이 작성한 코드.. 그리디/홀홀더하면짝 을 이용하려고 했는데 결과값이 안맞았다. 다시 생각
import java.io.*;
import java.lang.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
//사탕 묶음의 개수인 n을 입력 받음
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int[] arr = new int[n];
//각각의 사탕 묶음에 담겨 있는 사탕의 개수를 입력받음
StringTokenizer st = new StringTokenizer(br.readLine());
for (int i=0 ; i<arr.length ; i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
//test.사탕 개수 확인
System.out.println(Arrays.toString(arr));
/*
홀수는 크기 순으로 정렬해서 내림차순으로 훑으면서 홀수 개의 사탕 묶음이 두 개를 볼 때마다 그 두개를 합쳐 결과에 저장
*/
//배열 오름차순 정렬
Arrays.sort(arr);
//홀수 개의 사탕 묶음이 두 개씩 나오면 두 개를 합쳐줌
int output = 0, odd = 0;
for (int i=n-1 ; i>=0 ; i--) { //내림차순으로 시작
if (arr[i] % 2 == 1) { //홀수개라면 먼저 if문 돌려서
if (odd > 0) { //저장할 odd에 값이 있다면
output += odd + arr[i]; //현재 홀수개의 사탕묶음과 이전에 저장한 odd를 합쳐서 결과값에 저장
odd = 0; //다시 0으로 초기화
} else {
odd = arr[i]; //odd에 현재 사탕 묶음의 개수 저장
}
} else { //짝수면 바로 결과값에 더하기
output += arr[i];
}
}
System.out.println(output);
}
}
근데 이렇게 했더니 출력 초과가 떴다. 왜지 했는데, 내가 test용으로 해둔 코드까지 출력해서^_^ 지우니까 맞았다.
'coding study > baekjoon' 카테고리의 다른 글
[java] 19532. 수학은 비대면강의입니다 (0) | 2023.07.28 |
---|---|
[java] 23037. 5의 수난 (0) | 2023.07.28 |
[java] 1085. 직사각형에서 탈출 (0) | 2023.07.27 |
[java] 1284. 집주소 (0) | 2023.07.27 |
[java] 2501. 약수 구하기 (0) | 2023.07.26 |
Comments