N

(SWEA c++)5948. 새샘이의 7-3-5 게임 본문

SW Expert Academy

(SWEA c++)5948. 새샘이의 7-3-5 게임

naeunchan 2020. 11. 16. 14:10
728x90
반응형

swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWZ2IErKCwUDFAUQ&categoryId=AWZ2IErKCwUDFAUQ&categoryType=CODE

 

SW Expert Academy

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

swexpertacademy.com

 

7개의 숫자 중 3개를 뽑아서 더한 값에서 5번째로 큰 수를 구해야 한다.

숫자는 7개이기 때문에 3중 for문을 통해 3개의 수를 다 더해도 시간은 초과되지 않는다.

3개의 수를 더해서 ans 벡터에 넣어주는데, 중복값은 제거하고 넣어야 한다.

 

중복값을 체크하기 위한 bool형 벡터를 선언해주고, 초기화를 꼭 하도록 하자.

초기화를 안했더니 계속 오류가 떴다...

 

마지막에는 ans[4]를 출력하면 5번째로 큰 수를 구할 수 있다.

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main(void)
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    
    int t;
    cin >> t;
    
    for(int tc = 1; tc <= t; tc++)
    {
        vector<int> v, ans;
        vector<bool> arr(301, false);
        
        for(int i = 0; i < 7; i++)
        {
            int tmp;
            cin >> tmp;
            v.push_back(tmp);
        }
        //sort(v.begin(), v.end(), greater<int>());
        
        for(int i = 0; i < 7; i++)
        {
            for(int j = i + 1; j < 7; j++)
            {
                for(int k = j + 1; k < 7; k++)
                {
                    int num = v[i] + v[j] + v[k];
                	if(!arr[num])
                    {
                        ans.push_back(num);
                        arr[num] = true;
                    }
                }
            }
        }
        sort(ans.begin(), ans.end(), greater<int>());
        
        cout << "#" << tc << " " << ans[4] << endl;
    }
    return 0;
}
728x90
반응형