일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- til
- C++
- 2750
- 파이썬 포렌식
- matrixElementsSum
- 10953
- All Longest Strings
- collections.deque
- codesingal
- flask
- 피보나치 수
- recursion
- cpp
- shapeArea
- baekjun
- Python
- 파이썬머신러닝완벽가이드
- Sequential Search
- 수 정렬하기
- 2015 봄학기 알고리즘
- centuryFromYear
- markdown
- Daily Commit
- 백준
- Counting cells in a blob
- almostIncreasingSequence
- adjacentElementsProduct
- codesignal
- Numpy
- data_structure
Archives
- Today
- Total
Introfor
[백준] 2484번 주사위 네개 본문
유튜브 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 |
'Programming_prob > BaekJoon' 카테고리의 다른 글
[백준] 1065번 한수 (0) | 2020.10.05 |
---|---|
[백준] 4673번 셀프 넘버 (0) | 2020.10.03 |
[백준] 1748번 수 이어 쓰기 1 (0) | 2020.09.28 |
[백준] 10799번 쇠막대기 (0) | 2020.09.16 |
[백준] 9093번 단어 뒤집기 (0) | 2020.09.13 |
Comments