[문제보기]

 한빈이와 Spot Mart

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

[풀이과정]

 (1) 과자 봉지 개수 n, 최대 무게 m, 각 과자에 대한 무게 snack 배열 선언

 (2) for문을 통해 두 과자를 골랐을 때의 모든 경우를 살펴본다.

     그 무게가 m보다 이하일 때,

       ans에 값을 변경하면서 최대 무게를 찾는다.

 (3)  두 과자를 들고 갈 방법이 없는 경우 -1을 출력하기 위해 flag를 사용했다.

[소스코드]

#include <iostream>
using namespace std;
int snack[1000];
int ans;

int main(){
    cin.tie(0);
    cout.sync_with_stdio(false);

    int T;
    cin >> T;
    for(int test = 1; test <= T; test++){
        int n, m;
        cin >> n >> m;

        for(int i=0; i<n; i++){
            cin >> snack[i];
        }

        int sum;
        ans = 0;
        bool flag = false;
        for(int i=0; i<n; i++){
            for(int j=i+1; j<n; j++){
                sum = snack[i] + snack[j];
                if(sum <= m){
                    if(ans < sum)
                        ans = sum;
                    flag = true;
                }
            }
        }

        cout << "#" << test << " " ;
        if(flag){
            cout << ans << "\n";
        }
        else{
            cout << "-1" << "\n";
        }
    }
}

 

[해결과정 중 실수한 부분]