ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 백준 알고리즘: 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

    댓글

Designed by Tistory.