알고리즘/BOJ

백준 2217번 로프

꾸준함. 2018. 6. 26. 14:04

문제 링크입니다: https://www.acmicpc.net/problem/2217


최대 허용 중량이 w인 로프는 각각 하나씩 밖에 없으므로 그리디하게 접근할 수 있는 알고리즘 문제였습니다.

로프 중량을 오름차순으로 정렬한 뒤 (N-i+1)개를 병렬로 중첩하여 최대 중량을 찾아내는 식으로 접근하는 문제였습니다!


#include <iostream>

#include <vector>

#include <algorithm>

using namespace std;

 

int N;

vector<long long> rope;

 

long long maxWeight(void)

{

        long long result = 0;

       

        //각각의 로프는 한 개씩만 존재하므로 그리디하게 접근

        for (int i = 0; i < N; i++)

        {

                 long long weight = rope[i];

 

                 //rope[i]를 병렬로 (N-i+1)개 겹쳤을 때 최대 중량

                 for (int j = i + 1; j < N; j++)

                         weight += rope[i];

 

                 result = max(result, weight);

        }

        return result;

}

 

int main(void)

{

        cin >> N;

       

        for (int i = 0; i < N; i++)

        {

                 int weight;

                 cin >> weight;

 

                 rope.push_back(weight);

        }

 

        sort(rope.begin(), rope.end()); //밧줄 정렬

 

        cout << maxWeight() << endl;

        return 0;

}


개발환경:Visual Studio 2017


지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

반응형

'알고리즘 > BOJ' 카테고리의 다른 글

백준 1507번 궁금한 민호  (0) 2018.06.26
백준 2667번 단지번호붙이기  (3) 2018.06.26
백준 7568번 덩치  (0) 2018.06.26
백준 2668번 숫자고르기  (0) 2018.06.25
백준 7576번 토마토  (10) 2018.06.25