티스토리 뷰

반응형

https://www.acmicpc.net/problem/2217

 

2217번: 로프

N(1 ≤ N ≤ 100,000)개의 로프가 있다. 이 로프를 이용하여 이런 저런 물체를 들어올릴 수 있다. 각각의 로프는 그 굵기나 길이가 다르기 때문에 들 수 있는 물체의 중량이 서로 다를 수도 있다. 하

www.acmicpc.net


⊙ 문제

⊙ 입력

⊙ 출력

⊙ 예제 입출력

⊙ 알고리즘 분류

  • 수학
  • 그리디 알고리즘
  • 정렬
  • 물리학

 


 

⊙ 문제 접근 과정

 

내림차순 정렬을 한 후, min_element 함수를 사용하여 처음엔 시간 초과가 났다. 곰곰이 생각해보니 정렬을 했는데 min_element를 사용할 이유가 없었다. 바로 index로 접근하여 max함수를 이용해 정답 값인 rope를 구하였다.


 

⊙ 문제 풀이

 

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

using namespace std;

int N,rope;
vector<int> v;

int main() {
    cin >> N;

    for(auto i=0;i<N;i++) {
        int x;
        cin >> x;
        v.push_back(x);
    }

    sort(v.rbegin(),v.rend());

    for(auto i=0;i<N;i++)
        rope = max(rope,v[N-i-1]*(N-i));
        
    cout << rope;
}

⊙ 결과

 


⊙ 마무리

 

 

NONE

 

좋아요 로그인하지 않아도 누를 수 있습니다!

728x90
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함