Programming_prob/BaekJoon
[백준] 2484번 주사위 네개
YongArtist
2020. 9. 28. 22:16
유튜브 SKPlanet Tacademy에서 본 내용을 바탕으로 코드를 작성했다. 확실히 설명을 듣는 것과 맨땅 헤딩의 차이는 꽤나 있다.
이 문제의 키포인트는 공통된 주사위 눈을 어떡해 판별하는가이다. 판별하는 방법은 단순하게 정렬이다. 같은 숫자는 같은 숫자끼리 모여서 판별할 수 있다. 그러고 set()을 통해 공통 요소를 제거하는 것으로 중복 개수를 판단한다.
이 코드의 시간 복잡도는 O(2N)..?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
def reward() -> int:
lst = sorted(list(map(int, input().split())))
if len(set(lst)) == 1:
return 50000 + lst[0] * 5000
if len(set(lst)) == 2:
if lst[1] == lst[2]: return 10000 + lst[1] * 1000
return 2000 + lst[1] * 500 + lst[2] * 500
for i in range(3):
if lst[i] == lst[i+1]: return 1000 + lst[i] * 100
return lst[-1] * 100
N = int(input())
print(max(reward() for i in range(N)))
|
cs |