BOJ/백준-2217-python

cosmos·2021년 2월 9일
4
post-thumbnail

문제📖

풀이🙏

  • 첫째 줄에 정수 N이 주어진다.
  • N개 만큼의 로프를 한 줄에 하나씩 입력받는다.
  • 여러 개의 로프를 병렬로 연결하면 각각의 로프에 걸리는 중량을 나눌 수 있다.
    이 로프들을 이용하여 들어올릴 수 있는 물체의 최대 중량을 구하라.
    -> greedy 알고리즘 문제이다.
    -> 로프들을 이용하여 들어올릴 수 있는 물체의 최대 중량을 구하는걸 최우선으로 목표하고 코드를 짠다.
  • 중량이 w인 물체를 들어올릴 때, 각각의 로프에는 모두 고르게 w/k만큼의 중량이 걸리게 된다.
    -> list로 로프를 입력받아 내림차순으로 sort한다 (python 내장함수인 reverse, sort 사용)
    -> result[] = list 인덱스 번호 * 해당 인덱스 크기 append
    -> 최대 중량 출력 python 내장함수 max 사용

코드💻

# boj, 2217 : 로프, python3
import sys

N = int(sys.stdin.readline())
w = [int(sys.stdin.readline()) for i in range(N)]

w.sort()
w.reverse()

result = [w[i]*(i+1) for i in range(N)]

print(max(result))

결과😎

출처📝

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

github

github

0개의 댓글