문제
해결 방안 고민
•
7개의 자연수, 짝수인 자연수의 합, 짝수들의 최솟값 이라는 조건을 잘 활용하면 된다.
해결 방법
•
배열을 활용하여 풀이하는 방법과 배열을 활용하지 않고 풀이하는 방법이 있다.
•
누적 합과 최솟값을 활용하여 로직을 구현하면 된다.
코드
•
배열 활용
package algo250325;
import java.io.*;
import java.util.StringTokenizer;
// 백준 - 짝수를 찾아라 (브론즈 3)
public class Baek3058 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int t = Integer.parseInt(br.readLine());
// t번 순회
for (int i = 0; i < t; i++) {
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int[] arr = new int[7];
int sum = 0;
int min = Integer.MAX_VALUE;
for (int j = 0; j < 7; j++) {
arr[j] = Integer.parseInt(st.nextToken());
if (min > arr[j] && arr[j] % 2 == 0) {
min = arr[j]; // 최솟값 구분
}
// 짝수 구분 후 누적 합 구하기
if (arr[j] % 2 == 0) {
sum += arr[j];
}
}
System.out.println(sum + " " + min);
}
}
}
Java
복사
•
배열 활용 X
package algo250325;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
import java.util.Arrays;
// 백준 - 짝수를 찾아라 (브론즈 3)
public class Baek3058_2 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int t = Integer.parseInt(br.readLine());
// t번 순회
for (int i = 0; i < t; i++) {
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int sum = 0;
int min = Integer.MAX_VALUE;
for (int j = 0; j < 7; j++) {
int num = Integer.parseInt(st.nextToken());
// 짝수 구분 후 누적 합 구하기
if (num % 2 == 0) {
sum += num;
}
if (min > num && num % 2 == 0) {
min = num;
}
}
System.out.println(sum + " " + min);
}
}
}
Java
복사
정리
•
성능은 배열을 활용하지 않았을 때가 더 빠르다.
•
배열을 생성한 만큼 시간이 더 걸린다는 점을 고려하여 추후 코드 작성 시 참고해야 한다.