-
백준 알고리즘: 2217 로프Python 2020. 7. 19. 23:36
문제
N(1≤N≤100,000)개의 로프가 있다. 이 로프를 이용하여 이런 저런 물체를 들어올릴 수 있다. 각각의 로프는 그 굵기나 길이가 다르기 때문에 들 수 있는 물체의 중량이 서로 다를 수도 있다.
하지만 여러 개의 로프를 병렬로 연결하면 각각의 로프에 걸리는 중량을 나눌 수 있다. k개의 로프를 사용하여 중량이 w인 물체를 들어올릴 때, 각각의 로프에는 모두 고르게 w/k 만큼의 중량이 걸리게 된다.
각 로프들에 대한 정보가 주어졌을 때, 이 로프들을 이용하여 들어올릴 수 있는 물체의 최대 중량을 구해내는 프로그램을 작성하시오. 모든 로프를 사용해야 할 필요는 없으며, 임의로 몇 개의 로프를 골라서 사용해도 된다.
코드
import sys k = int(sys.stdin.readline().strip()) rope = [] for i in range(k): rope.append(int(sys.stdin.readline().strip())) rope.sort() print(rope) count = k max = 0 for i in range(k): if(rope[i] * (k-i) >= max): max = rope[i] * (count-i) print(max)
오답노트
1. 문제에 대한 이해 부족.
- 꼼꼼함과 분석력을 더 갖출 필요성.
2. for loop를 다룰 때 i가 점점 증가하여 따로 -1 을 안해줘도 되는데 의식의 흐름대로 -1을 해줘서 연속 오답.
개선된 점
1. 입력을 받을 때, input() 메소드를 사용하지 않고, sys.stdin.readline() 사용.
2. sort() 메소드 활용.
'Python' 카테고리의 다른 글
input() 메소드 시간초과 (0) 2020.07.19