** 이 글을 읽음에 앞서 포스팅 된 소스가 100% 정답은 아님을 밝힙니다.
더욱 유능한 분께서 클린 / 최적의 소스를 짜셨을 가능성이 높습니다.
기록용으로 남기며, 참고만 부탁드립니다.
** 백준 알고리즘은 직접 풀이를 해보시는 것을 권장합니다.
● 문제
난이도[티어] : 실버 4
백준 알고리즘 2217번 문제 로프
https://www.acmicpc.net/problem/2217
● 풀이 방법
로프를 통해 물체를 들어올릴수 있는 가장 큰 무게를 구하는 문제.
로프를 다 쓸 필요가 없다는 것이 키포인트 이다.
어떤 로프가 견딜 수 있는 무게가 다른 로프들 보다 클 경우 모든 로프를 사용할 필요가 없어지게 되는 것.
이를 유의하여 소스를 짜야한다.
● 소스 코드
#include <iostream>
#include <algorithm>
int main()
{
int rope_cnt ,can = -1;
std::cin >> rope_cnt;
int rope[rope_cnt];
for(int i = 0; i < rope_cnt; i++){
std::cin >> rope[i];
}
// 각 로프가 견딜 수 있는 무게를 정렬
// [0] 가장 약한 로프 [rope_cnt-1] 가장 강한 로프
std::sort(rope,rope+rope_cnt);
// 로프의 개수 별 감당 가능 무게 측정
for(int i = 0; i < rope_cnt; i++){
if(can < rope[i]*(rope_cnt-i)){
can = rope[i]*(rope_cnt-i);
}
}
std::cout << can;
return 0;
}
먼저 로프 별 감당 가능한 무게를 배열로 입력받은 후
해당 배열을 감당 가능 무게로 정렬한다. --> sort()
이후 차례로 [0]번째 배열부터 하나씩 제외하며 감당 가능한 무게를 측정
가장 최대로 들 수 있는 무게를 can에 저장한 후 출력
● 결과
** 코드 길이가 상이 할 수 있습니다! 그러나 내용물은 같습니다.
이유) 주석 및 더미 소스 유무
'백준 알고리즘' 카테고리의 다른 글
[백준 알고리즘 C/C++] 2828번 문제 풀이 : 사과 담기 게임 (0) | 2024.03.13 |
---|---|
[백준 알고리즘 C/C++] 14916번 문제 풀이 : 거스름돈 (0) | 2024.03.13 |
[백준 알고리즘 C/C++] 1343번 문제 풀이 : 폴리오미노 (0) | 2024.03.13 |
[백준 알고리즘 C/C++] 1005번 문제 풀이 : ACM Craft (0) | 2024.03.11 |
[백준 알고리즘 C/C++] 1004번 문제 풀이 : 어린 왕자 (0) | 2024.03.11 |