πŸŽ“ μ„œκ°•κ·ΈλΌμš΄λ“œ

λ°±μ€€ Class4 Gold4

solved_ac[Class4] μ„œκ°•κ·ΈλΌμš΄λ“œ

문제


μ˜ˆμ€μ΄λŠ” μš”μ¦˜ κ°€μž₯ 인기가 μžˆλŠ” κ²Œμž„ μ„œκ°•κ·ΈλΌμš΄λ“œλ₯Ό 즐기고 μžˆλ‹€. μ„œκ°•κ·ΈλΌμš΄λ“œλŠ” μ—¬λŸ¬ 지역쀑 ν•˜λ‚˜μ˜ 지역에 λ‚™ν•˜μ‚°μ„ 타고 λ‚™ν•˜ν•˜μ—¬, κ·Έ 지역에 λ–¨μ–΄μ Έ μžˆλŠ” μ•„μ΄ν…œλ“€μ„ μ΄μš©ν•΄ μ„œλ°”μ΄λ²Œμ„ ν•˜λŠ” κ²Œμž„μ΄λ‹€. μ„œκ°•κ·ΈλΌμš΄λ“œμ—μ„œ 1등을 ν•˜λ©΄ λ³΄μƒμœΌλ‘œ μΉ˜ν‚¨μ„ μ£ΌλŠ”λ°, μ˜ˆμ€μ΄λŠ” 단 ν•œλ²ˆλ„ μΉ˜ν‚¨μ„ 먹을 μˆ˜κ°€ μ—†μ—ˆλ‹€. μžμ‹ μ΄ μΉ˜ν‚¨μ„ λͺ» λ¨ΉλŠ” μ΄μœ λŠ” μ‹€λ ₯ λ•Œλ¬Έμ΄ μ•„λ‹ˆλΌ μ•„μ΄ν…œ 운이 μ—†μ–΄μ„œλΌκ³  μƒκ°ν•œ μ˜ˆμ€μ΄λŠ” λ‚™ν•˜μ‚°μ—μ„œ λ–¨μ–΄μ§ˆ λ•Œ 각 지역에 μ•„μ΄ν…œ 듀이 λͺ‡ 개 μžˆλŠ”μ§€ μ•Œλ €μ£ΌλŠ” ν”„λ‘œκ·Έλž¨μ„ κ°œλ°œμ„ ν•˜μ˜€μ§€λ§Œ μ–΄λ””λ‘œ λ‚™ν•˜ν•΄μ•Ό μžμ‹ μ˜ μˆ˜μƒ‰ λ²”μœ„ λ‚΄μ—μ„œ κ°€μž₯ λ§Žμ€ μ•„μ΄ν…œμ„ 얻을 수 μžˆλŠ”μ§€ μ•Œ 수 μ—†μ—ˆλ‹€.

각 지역은 μΌμ •ν•œ 길이 l (1 ≀ l ≀ 15)의 길둜 λ‹€λ₯Έ 지역과 μ—°κ²°λ˜μ–΄ 있고 이 길은 μ–‘λ°©ν–₯ 톡행이 κ°€λŠ₯ν•˜λ‹€. μ˜ˆμ€μ΄λŠ” λ‚™ν•˜ν•œ 지역을 μ€‘μ‹¬μœΌλ‘œ 거리가 μˆ˜μƒ‰ λ²”μœ„ m (1 ≀ m ≀ 15) μ΄λ‚΄μ˜ λͺ¨λ“  μ§€μ—­μ˜ μ•„μ΄ν…œμ„ μŠ΅λ“ κ°€λŠ₯ν•˜λ‹€κ³  ν•  λ•Œ, μ˜ˆμ€μ΄κ°€ 얻을 수 μžˆλŠ” μ•„μ΄ν…œμ˜ μ΅œλŒ€ 개수λ₯Ό μ•Œλ €μ£Όμž.

img

주어진 ν•„λ“œκ°€ μœ„μ˜ κ·Έλ¦Όκ³Ό κ°™κ³ , μ˜ˆμ€μ΄μ˜ μˆ˜μƒ‰λ²”μœ„κ°€ 4라고 ν•˜μž. ( 원 λ°–μ˜ μˆ«μžλŠ” 지역 번호, μ•ˆμ˜ μˆ«μžλŠ” μ•„μ΄ν…œ 수, μ„  μœ„μ˜ μˆ«μžλŠ” 거리λ₯Ό μ˜λ―Έν•œλ‹€) μ˜ˆμ€μ΄κ°€ 2번 지역에 λ–¨μ–΄μ§€κ²Œ 되면 1번,2번(자기 지역), 3번, 5번 지역에 도달할 수 μžˆλ‹€. (4번 μ§€μ—­μ˜ 경우 κ°€λŠ” 거리가 3 + 5 = 8 > 4(μˆ˜μƒ‰λ²”μœ„) μ΄λ―€λ‘œ 4번 μ§€μ—­μ˜ μ•„μ΄ν…œμ„ 얻을 수 μ—†λ‹€.) μ΄λ ‡κ²Œ 되면 μ˜ˆμ€μ΄λŠ” 23개의 μ•„μ΄ν…œμ„ 얻을 수 있고, μ΄λŠ” μœ„μ˜ ν•„λ“œμ—μ„œ μ˜ˆμ€μ΄κ°€ 얻을 수 μžˆλŠ” μ•„μ΄ν…œμ˜ μ΅œλŒ€ κ°œμˆ˜μ΄λ‹€.

μž…λ ₯


첫째 μ€„μ—λŠ” μ§€μ—­μ˜ 개수 n (1 ≀ n ≀ 100)κ³Ό μ˜ˆμ€μ΄μ˜ μˆ˜μƒ‰λ²”μœ„ m (1 ≀ m ≀ 15), 길의 개수 r (1 ≀ r ≀ 100)이 주어진닀.

λ‘˜μ§Έ μ€„μ—λŠ” n개의 μˆ«μžκ°€ μ°¨λ‘€λŒ€λ‘œ 각 ꡬ역에 μžˆλŠ” μ•„μ΄ν…œμ˜ 수 t (1 ≀ t ≀ 30)λ₯Ό μ•Œλ €μ€€λ‹€.

μ„Έ 번째 쀄뢀터 r+2번째 쀄 κΉŒμ§€ κΈΈ μ–‘ 끝에 μ‘΄μž¬ν•˜λŠ” μ§€μ—­μ˜ 번호 a, b, 그리고 길의 길이 l (1 ≀ l ≀ 15)κ°€ 주어진닀.

좜λ ₯


μ˜ˆμ€μ΄κ°€ 얻을 수 μžˆλŠ” μ΅œλŒ€ μ•„μ΄ν…œ 개수λ₯Ό 좜λ ₯ν•œλ‹€.

예제 μž…λ ₯ 1

5 5 4
5 7 8 2 3
1 4 5
5 2 4
3 2 3
1 2 3

예제 좜λ ₯ 1

23

πŸ“– μ•Œκ³ λ¦¬μ¦˜

이 문제의 핡심을 κ°„νŒŒν•˜λ©΄ λ‹€μŒκ³Ό κ°™λ‹€.

  • Weightκ°€ μ‘΄μž¬ν•˜λŠ” κ·Έλž˜ν”„μ΄λ©° 문제 쑰건에 μ œν•œμ΄ μžˆλ‹€.
  • 각 λ…Έλ“œμ— Valueκ°€ μ‘΄μž¬ν•œλ‹€.
  • λͺ¨λ“  λ…Έλ“œμ—μ„œ μΆœλ°œν•˜μ—¬ λͺ¨λ“  λ…Έλ“œλ‘œ λ„μ°©ν•˜λŠ” κ°€μž₯ λΉ λ₯Έ 경둜λ₯Ό ꡬ해야 ν•œλ‹€.

μ—¬κΈ°μ„œ 제일 μ€‘μš”ν•œ 뢀뢄은 λ§ˆμ§€λ§‰ 쑰건이닀. 3λ²ˆμ„ Base둜 깔아두고 1번과 2번 쑰건을 μ–Ήμ–΄μ•Ό ν•œλ‹€.

κ·Έλ ‡λ‹€λ©΄ 3번 쑰건에 λΆ€ν•©ν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜μ€ λ¬΄μ—‡μΌκΉŒ? ν”Œλ‘œμ΄λ“œ λ¬Έμ œμ—μ„œ μš°λ¦¬λŠ” λ‹€μŒκ³Ό 같은 지식을 μ–»μ—ˆλ‹€.

[ν”Œλ‘œμ΄λ“œ 와샬 μ•Œκ³ λ¦¬μ¦˜μ€ Weightκ°€ μžˆλŠ” κ·Έλž˜ν”„μ—μ„œ λͺ¨λ“  λ…Έλ“œμ—μ„œ λͺ¨λ“  λ…Έλ“œλ‘œ κ°€λŠ” μ΅œμ†Œ λΉ„μš©μ„ ꡬ할 λ•Œ μ‚¬μš©ν•œλ‹€.]

ν˜Ήμ—¬, 3번 쑰건이 μ™œ ν•„μš”ν•œμ§€ 이해가 μ•ˆ κ°€μ‹œλŠ” 뢄듀을 μœ„ν•˜μ—¬ μ„€λͺ…을 ν•˜μžλ©΄ μ˜ˆμ€μ΄κ°€ μˆ˜μƒ‰ν•  수 μžˆλŠ” λ²”μœ„λŠ” ν•œμ •μ μ΄λ‹€.

λ”°λΌμ„œ μ΅œλŒ€ν•œ λ§Žμ€ μ•„μ΄ν…œμ„ 쀍기 μœ„ν•΄μ„œλŠ” 각 지역을 μ΅œλ‹¨ 경둜둜 탐색해야 μ œν•œλœ μˆ˜μƒ‰ λ²”μœ„ λ‚΄μ—μ„œ μ΅œλŒ€ν•œ 이득을 λ³Ό 수 있기 떄문이닀.

πŸ“ 섀계

α„‹α…§α†«α„‰α…³α†Έα„Œα…‘α†Ό-35

  1. ν”Œλ‘œμ΄λ“œ 와샬 ➑️ λͺ¨λ“  λ…Έλ“œμ—μ„œ λͺ¨λ“  λ…Έλ“œλ‘œ κ°€λŠ” μ΅œμ†Œ λΉ„μš© ν…Œμ΄λΈ”
  2. 각 λ…Έλ“œμ—μ„œ μΆœλ°œν•˜μ˜€μ„ λ•Œ, [μ΅œμ†Œ λΉ„μš© ≀ μˆ˜μƒ‰ λ²”μœ„]
  3. 2번 쑰건에 λΆ€ν•©ν•˜λŠ” item 개수 μ €μž₯
  4. 3번 μ‘°κ±΄μ—μ„œ 제일 큰 item 개수 좜λ ₯

πŸ‘¨πŸ»β€πŸ’» CODE

INF = int(1e9)
region, search, road = map(int,input().split())

item = list(map(int,input().split()))

graph = [[INF]*region for _ in range(region)]

for i in range(road):
    start,end,distance = map(int,input().split())

    graph[start-1][end-1] = distance
    graph[end-1][start-1] = distance

for i in range(region):
    graph[i][i] = 0

# ν”Œλ‘œμ΄λ“œ 와샬 μ•Œκ³ λ¦¬μ¦˜
for i in range(region):
    for j in range(region):
        for k in range(region):
            if graph[j][k] > graph[j][i] + graph[i][k]:
                graph[j][k] = graph[j][i] + graph[i][k]


lst_answer = []
for i in range(region):
    count = 0
    for j in range(region):
        if graph[i][j] <= search:
            count += item[j]
    lst_answer.append(count)

print(max(lst_answer))

Β© 2022. All rights reserved.

Powered by Hydejack v9.1.6