반응형
#include<iostream>
#include<algorithm>
using namespace std;
int main(){
int n;
int temp;
int rope[100001];
int min = 0;
scanf("%d", &n);
for(int i=0; i<n; i++){
scanf("%d", &rope[i]);
}
sort(rope, rope+n);
for(int i=0; i<n; i++){
if(rope[i]*(n-i) > min){
min = rope[i]*(n-i);
}
}
printf("%d", min);
}
설명
n 개의 로프의 정보를 입력 받은 뒤 이를 배열에 넣고 정렬해준다. 그리고 정렬된 배열의 앞 인덱스부터 rope[0]*(n), rope[1]*(n-1)... 이런 식으로 계속 반복문을 돌려서 이 중 가장 큰 값을 출력해준다. 이렇게 해야하는 이유는 임의의 로프는 제외해도 되기 때문에, 만약에 로프가 5개가 있는데, 버틸 수 있는 힘이 각각 10, 8, 8, 8, 3 이라면 3을 넣고 무게를 달면 15가 최대이지만, 3을 제외시키면, 32까지 무게를 달 수 있기 때문이다.
문제점
처음 문제를 풀 때, 모든 로프를 사용해야하는 줄 알고 풀었다가 틀린 후 문제를 다시 읽어보았다.
반응형
'코딩 이야기 > 백준 풀이' 카테고리의 다른 글
백준 11758번: CCW C++코드(기하학) (0) | 2021.07.31 |
---|---|
백준 11650번: 좌표 정렬하기 C++코드(정렬) (0) | 2021.07.31 |
백준 11650번: 좌표 정렬하기 C++코드(정렬) (0) | 2021.07.24 |
백준 1065번: 한수 C언어 코드(완전탐색, 브루트포스) (0) | 2021.07.23 |
백준 1316번: 그룹 단어 체커 C언어 코드(구현) (5) | 2021.07.22 |