본문 바로가기
코딩테스트

[백준] 26267 은?행 털!자 1 - python

by CuckooBird 2023. 2. 8.

백준 실버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