백준 실버3 26267 은?행 털!자 1 - python
https://www.acmicpc.net/problem/26267
26267번: 은?행 털!자 1
프로 은행강도 시우가 은행을 털려고 한다. 시우가 달려가는 일직선 경로 위엔 $N$개의 은행이 있다. $i$번째 은행은 직선상에서 서로 다른 좌표 $X_i$에 위치하며, 시간이 정확히 $T_i$ 일 때만 문이
www.acmicpc.net
코드
맞았습니다가 뜬 코드입니다. - 메모리 59928KB | 시간 584ms | 코드 길이 266B
import sys
N = int(sys.stdin.readline().rstrip())
bank = list()
dic = dict()
for i in range(N):
X, T, C = map(int, sys.stdin.readline().rstrip().split())
if X-T not in dic.keys():
dic[X-T] = C
else:
dic[X-T] += C
print(max(dic.values()))
X-T에 해당하는 수가 시작점이 됩니다. 그리고 시작점이 같은 은행은 털 수 있습니다. 이를 이용해서 딕셔너리를 만들면 됩니다. 키값에 X-T를 넣고, 밸류값에는 어차피 털 은행이니 C를 더해줍니다.
마지막으로는 그렇게 해서 가장 큰 밸류값을 출력하면 됩니다.
Try 1.
시간초과가 뜬 코드입니다. - 코드 길이 402B
import sys
N = int(sys.stdin.readline().rstrip())
bank = [[] for i in range(N)]
for i in range(N):
bank[i] = list(map(int, sys.stdin.readline().rstrip().split()))
money = 0
m_list = []
for i in range(N):
start = bank[i][0] - bank[i][1]
for j in range(N):
if start + bank[j][1] == bank[j][0]:
money += bank[j][2]
m_list.append(money)
money = 0
print(max(m_list))
- 문제의 카테로리대로 해시를 사용하지 않았습니다.
후기
문제풀이 꿀팁 안 풀리면 카테고리 슬쩍보기..
'코딩테스트' 카테고리의 다른 글
[백준] 1735 분수 합 - Python (2) | 2023.02.10 |
---|---|
[백준] 5911 선물 - Python (2) | 2023.02.09 |
[백준] 1183 약속 - python (1) | 2023.02.08 |
[백준] 2606 바이러스 - python (2) | 2023.02.07 |
[백준] 9375 패션왕 신해빈 - python (1) | 2023.02.06 |