* 알고리즘 너무 약해서 기초 문제 50개 목표로 푸는 중...
* 3시간 안에 답을 내지 못하면 답지를 보고 30분 내로 정답 판정을 받고, 3일 뒤 다시 풀어보기
Greedy
5 / 50(NEW!)
탐색
5 / 50
기초 동적 프로그래밍
4 / 50
투포인터
0 / 10
문제
→ solved.ac 기준 실버 4
문제 해결 아이디어
최대 중량이라면 최대 중량이 큰 로프를 우선적으로 택해야 함
→ 로프의 중량이 큰 순대로 정렬
→ 예시로 15, 10, 5, 3의 중량을 가졌다고 가정
15만 선택했을 경우: 각 로프 당 최대 w, 가장 버티는 무게가 작은 15의 로프에 따라 15
15, 10을 선택했을 경우: 각 로프 당 최대 w * 2, 가장 버티는 중량이 작은 10의 로프에 따라 10 * 2 = 20
15, 10, 5을 선택했을 경우: 각 로프 당 최대 w * 3, 가장 버티는 중량이 작은 5의 로프에 따라 5 * 3 = 15
..
→ 내림차순 정렬 후 for문을 돌면서 버틸 수 있는 최대 중량을 변수에 저장한다.
구현
내 풀이
n = int(input())
ropes = [int(input()) for _ in range(n)]
ropes.sort(reverse=True)
answer = 0
for idx, rope in enumerate(ropes):
answer = max(answer, rope * (idx + 1))
print(answer)
메모
- 걸린 시간: 15분
'Algorithm' 카테고리의 다른 글
[알고리즘] BOJ 11722번 - 가장 긴 감소하는 부분 수열(python3) (0) | 2023.05.27 |
---|---|
[알고리즘] BOJ 2748번 - 피보나치 수 2(python3) (0) | 2023.05.25 |
[알고리즘] BOJ 7569번 - 토마토(python3) (0) | 2023.05.25 |
[알고리즘] BOJ 1389번 - 케빈 베이컨의 6단계 법칙(python3) (0) | 2023.05.25 |
[알고리즘] BOJ 2875번 - 대회 or 인턴(python3) (2) | 2023.05.24 |