브론즈 1 문제이다.
단순 하드코딩으로 이차원 배열에 3명의 후보별로 [총점, 3점, 2점] 리스트로 구성해 정렬하는 방식으로 풀다가 막혀서 구글링하다가 3점, 2점 점수 합 제곱을 해줘서(가중치 처리) 크기 비교를 하는 풀이법을 찾았다. (이런 아이디어 나도 내고 싶다..)
아이디어를 참고해 풀었다.
파이썬 코드는 다음과 같다.
import sys
input = sys.stdin.readline
N = int(input())
arr1 = [0] * 3 # 후보별 총 점수 배열
arr2 = [0] * 3 # 후보별 선호도 점수를 제곱해서 합산한 배열
for _ in range(N):
a, b, c = map(int, input().strip().split())
# 후보마다 점수 더해주기
arr1[0] += a
arr1[1] += b
arr1[2] += c
# 제곱해서 더해주기
arr2[0] += a*a
arr2[1] += b*b
arr2[2] += c*c
# print(arr1, arr2)
max_value = max(arr1)
if arr1.count(max_value) == 1: # 총합 가장 큰 사람 1명이면
for i in range(3):
if arr1[i] == max_value:
print(i+1, max_value)
else: # 그렇지 않다면
next_max_value = max(arr2)
idx = arr2.index(next_max_value)
if arr2.count(next_max_value) == 1: # 제곱합이 가장 큰 사람이 1명이면
print(idx+1, arr1[idx])
else: # 그렇지 않으면 1등 없음
print(0, arr1[idx])
- 시간 108ms(1등 달성!) / 메모리 12220KB
- 고찰 : 브론즈 문제라고 쉽게 봤다가 결국 다른 풀이를 참고해서 풀었다. 나태해지지 말자.
'Problem Solving > boj' 카테고리의 다른 글
[BOJ] 9095. 1, 2, 3 더하기(Python) / DP (0) | 2021.03.04 |
---|---|
[BOJ] 6588. 골드 바흐의 추측(Python) (0) | 2021.03.04 |
[BOJ] 2468. 안전 영역(Python) / BFS (0) | 2021.02.25 |
[BOJ] 4179. 불! (Python) / BFS (0) | 2021.02.24 |
[BOJ] 1915. 가장 큰 정사각형(Python) / DP (0) | 2021.02.23 |