[BOJ][Python] 백준 10800번: 컬러볼
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])
댓글남기기