반응형
츄르사려고 코딩하는 코집사입니다.
1. [SW expert Academy] SWEA 9229번 한빈이와 Spot Mart 자바(Java)
1) 난이도 : D3
2) 문제번호 : 9229번
3) 문제 출처
2. 문제
한빈이는 퇴근길에 스팟마트에 들러 과자 두 봉지를 사서 양 손에 하나씩 들고 가려고 한다.
스팟마트에는 N개의 과자 봉지가 있으며, 각 과자 봉지는 ai그램의 무게를 가진다.
배가 많이 고픈 한빈이는 최대한 양이 많은 (무게가 많이 나가는) 과자 봉지를 고르고 싶으나,
과자 두 봉지의 무게가 M 그램을 초과하면 무거워서 과자를 들고 다닐 수 없다.
한빈이가 들고 다닐수 있는 과자들의 최대 무게 합을 출력하라. 한빈이는 과자를 “정확히” 두 봉지 사야 함에 유의하라.
3. 제약사항
-
4. 입력
첫 번째 줄에 테스트 케이스의 수 TC 가 주어진다.
이후 TC 개의 테스트 케이스가 새 줄로 구분되어 주어진다. 각 테스트 케이스는 다음과 같이 구성되었다.
첫 번째 줄에 과자 봉지의 개수와 무게 합 제한을 나타내는 자연수 N, M이 주어진다.
(2 ≤ N ≤ 1000 , 2 ≤ M ≤ 2000000)
이후 N개의 줄에 각 과자봉지의 무게 가 주어진다. (1 ≤ ai ≤ 1000000)
5. 출력
각 테스트 케이스마다 ‘#x’(x는 테스트 케이스 번호를 의미, 1부터 시작)를 출력하고,
한빈이가 들고 갈 수 있는 과자 봉지의 무게 합 최대를 출력하라.
만약 한빈이가 두 과자를 들고 갈 방법이 없는 경우에는 -1을출력한다.
6. 풀이
- 배열 1개를 이용하여 풀었다.
- 배열에 과자 봉지들을 넣고, 2개씩 합해서 M보다 작거나 같은 것 중에 MAX값을 찾는다.
7. 소스 코드
import java.util.*;
public class Solution {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int T = sc.nextInt();
for(int tc=1;tc<=T;tc++) {
int N = sc.nextInt();
int M = sc.nextInt();
int[] arr = new int[N];
for(int i=0;i<N;i++) arr[i] = sc.nextInt();
int max = 0;
int sum = 0;
//배열 2개 선택해서 M보다 작거나 같으면서 max찾기
for(int i=0;i<N-1;i++) {
for(int j=i+1;j<N;j++) {
sum = arr[i] + arr[j];
if(sum<=M&& max<sum) max = sum;
}
}
if(max==0) System.out.printf("#%d %d\n",tc,-1);
else System.out.printf("#%d %d\n",tc,max);
}
}
}
반응형
'알고리즘 > SW expert Academy' 카테고리의 다른 글
[SW expert Academy] SWEA 1961번 숫자 배열 회전 자바(Java) (0) | 2021.02.09 |
---|---|
[SW expert Academy] SWEA 1976번 시각 덧셈 자바(Java) (0) | 2021.02.09 |
[SW expert Academy] SWEA 1966번 숫자를 정렬하자 자바(Java) (0) | 2021.02.09 |
[SW expert Academy] SWEA 1940번 가랏! RC카! 자바(Java) (0) | 2021.02.09 |
[SW expert Academy] SWEA 1228번 암호문1 자바(Java) (0) | 2021.02.08 |
[SW expert Academy] SWEA 1979번 어디에 단어가 들어갈 수 있을까 자바(Java) (0) | 2021.02.07 |
[SW expert Academy] SWEA 1223번 계산기2 자바(Java) (0) | 2021.02.06 |
[SW expert Academy] SWEA 1959번 두 개의 숫자열 자바(Java) (0) | 2021.02.05 |
최근댓글