1일 1PS 58일차!

📚 문제


골드 2 컬러볼

💡 풀이 과정


  • 받는 볼을 크기 순서대로 정렬한다.
  • 각 플레이어는 자신보다 작은 공들을 모두 집을 수 있다.
    • 하지만 자신과 같은 색깔의 공을 집을 수 없기에 해당 볼만 빼주면 된다.
  • 즉, 모든 공의 크기를 저장하는 total 에서 자신과 같은 색깔의 공을 저장하고 있는 color_count[] 를 빼주면 답이 된다.

📌포인트


  • 정렬…!

💻 코드



n = int(input())
balls = []

for i in range(n):
    color, size = map(int, input().split())
    balls.append((size, color, i))
    #공의 size, color, input 순서에 대한 정보를 넣는다

balls.sort()
color_count = [0] * 200001
total = 0
j = 0
answer = [0] * (n + 1)
for i in range(n):
    while balls[j][0] < balls[i][0]: # 자신의 공보다 더 작은 공인 지 확인
        color_count[balls[j][1]] += balls[j][0]
        total += balls[j][0]
        j += 1
    answer[balls[i][2]] = total - color_count[balls[i][1]] # 

for i in range(n):
    print(answer[i])

업데이트:

댓글남기기