😎 κ³΅λΆ€ν•˜λŠ” μ§•μ§•μ•ŒνŒŒμΉ΄λŠ” μ²˜μŒμ΄μ§€?

[Softeer] python λ³΅μž‘ν•œ 쑰립라인1 λ³Έλ¬Έ

πŸ¦₯ μ½”ν…Œ/Softeer

[Softeer] python λ³΅μž‘ν•œ 쑰립라인1

μ§•μ§•μ•ŒνŒŒμΉ΄ 2023. 1. 7. 11:23
728x90
λ°˜μ‘ν˜•

<λ³Έ λΈ”λ‘œκ·ΈλŠ” Softeer의 μ½”λ”©ν…ŒμŠ€νŠΈ 문제λ₯Ό μ°Έκ³ ν•΄μ„œ κ³΅λΆ€ν•˜λ©° μž‘μ„±ν•˜μ˜€μŠ΅λ‹ˆλ‹€>

https://softeer.ai/practice/info.do?idx=1&eid=404 

 

Softeer

μ—°μŠ΅λ¬Έμ œλ₯Ό 담을 Set을 μ„ νƒν•΄μ£Όμ„Έμš”. μ·¨μ†Œ 확인

softeer.ai

 

⭐ 문제

언어별 μ‹œκ°„/λ©”λͺ¨λ¦¬
Python 2초 256MB

문제
λ™μΌν•œ μžλ™μ°¨λ₯Ό μƒμ‚°ν•˜λŠ” K개의 μ‘°λ¦½λΌμΈ Li (1 ≤ i ≤ K)κ°€ μžˆλ‹€. ν•œ μ‘°λ¦½λΌμΈμ—λŠ” κ°κ° N개의 μž‘μ—…μž₯이 μžˆλ‹€. κ°κ°μ˜ μž‘μ—…μž₯을 Li, j (1 ≤ i ≤ K, 1 ≤ j ≤ N)둜 ν‘œμ‹œν•˜μž. λͺ¨λ“  λΌμΈμ˜ j번째 μž‘μ—…μž₯은 λ™μΌν•œ μž‘업을 μˆ˜ν–‰ν•˜μ§€λ§Œ μž‘μ—… μ‹œκ°„은 λ‹€λ₯Ό μˆ˜ μžˆλ‹€. λͺ¨λ“  μ‘°λ¦½λΌμΈμ€ 1번 μž‘μ—…μž₯μ—μ„œ μ΅œμ΄ˆ μ‘°λ¦½μ΄ μ‹œμž‘λ˜λ©°, j번째 μž‘μ—…μž₯μ—μ„œ μž‘업이 μ’…λ£Œλ˜λ©΄ λ°”λ‘œ j+1번째 μž‘μ—…μž₯μ—μ„œ μž‘업을 μ‹œμž‘ν•  μˆ˜ μžˆλ‹€. 

Li, j μž‘μ—…μž₯μ—μ„œ LK, j+1 (i ≠ K) μž‘μ—…μž₯으둜 μ΄λ™μ΄ κ°€λŠ₯(μ΄λ™μ‹œκ°„μ΄ μΆ”가됨)ν•  λ•Œ, μžλ™μ°¨ 1λŒ€μ˜ κ°€μž₯ λΉ λ₯Έ μ‘°λ¦½ μ‹œκ°„을 κ΅¬ν•˜μ—¬λΌ.



μ œμ•½μ‘°κ±΄
1 ≤ N ≤ 10^2 μΈ μ •μˆ˜

1 ≤ K ≤ 10^2 μΈ μ •μˆ˜
각 μž‘μ—…μ‹œκ°„κ³Ό μ΄λ™μ‹œκ°„μ€ 10^5을 λ„˜μ§€ μ•ŠλŠ” μ–‘μ˜ μ •μˆ˜

μž…λ ₯ν˜•μ‹
첫 λ²ˆμ§Έ μ€„에 λΌμΈμ˜ μˆ˜ K와 μž‘μ—…μž₯의 μˆ˜ N이 μ£Όμ–΄μ§„λ‹€.  j+1 (1 ≤ j ≤ N-1) λ²ˆμ§Έ μ€„μ—λŠ” Li, j (1 ≤ i ≤ K) μž‘μ—…μž₯의 μž‘μ—…μ‹œκ°„μ΄ i의 μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μ£Όμ–΄μ§€κ³ , Li, j μž‘μ—…μž₯μ—μ„œ LK, j+1 (K ≠ i) μž‘μ—…μž₯κΉŒμ§€ μ΄λ™μ‹œκ°„이 i의 μ˜€λ¦„μ°¨μˆœ(iκ°€ λ™μΌν•  λ•ŒλŠ” K의 μ˜€λ¦„μ°¨μˆœ)으둜 μ£Όμ–΄μ§„λ‹€.


좜λ ₯ν˜•μ‹
첫 λ²ˆμ§Έ μ€„에 κ°€μž₯ λΉ λ₯Έ μ‘°λ¦½μ‹œκ°„을 μΆœλ ₯ν•˜λΌ.


μž…λ ₯예제1
2 2
1 3 1 2
10 2

좜λ ₯예제1
4

 

βœ… Code

# L(i, j) μž‘μ—…μž₯μ—μ„œ L(K, j+1) (i ≠ K) μž‘μ—…μž₯으둜 이동이 κ°€λŠ₯(μ΄λ™μ‹œκ°„μ΄ 좔가됨)ν•  λ•Œ,
# μžλ™μ°¨ 1λŒ€μ˜ κ°€μž₯ λΉ λ₯Έ 쑰립 μ‹œκ°„

import sys
input = sys.stdin.readline

# 라인 수, μž‘μ—…μž₯ 수
K, N = map(int, input().split())

dp = []
total_time =[[[0 for i in range(K)] for j in range(K)] for k in range(N)]

for i in range(N-1) :
    # L(i, j) (1 ≤ i ≤ K) μž‘μ—…μž₯의 μž‘μ—…μ‹œκ°„
    work = list(map(int, input().split()))
    # μž‘μ—… μ‹œκ°„
    dp.append(work[:K])
    cnt = 0

    for j in range(K) :
        for k in range(K) :
            if j == k :
                continue

            total_time[i][j][k] = work[K+cnt]
            cnt += 1

dp.append(list(map(int, input().split())))

for i in range(N-1) :
    for j in range(K) :
        temp = dp[i][j]
        for k in range(K) :
            if j == k :
                continue
            temp = min(temp, dp[i][k] + total_time[i][k][j])
        dp[i+1][j] += temp
print(min(dp[-1]))

 

문제 이해도.. 잘 λ˜μ§€ μ•ŠλŠ”..

https://thflgg133.tistory.com/214

 

[Softeer/Python] λ³΅μž‘ν•œ 쑰립라인1 β˜…β˜…β˜…β˜…β˜† - νš¨κ³ΌλŠ” ꡉμž₯ν–ˆλ‹€!

Softeer μ—°μŠ΅λ¬Έμ œλ₯Ό 담을 Set을 μ„ νƒν•΄μ£Όμ„Έμš”. μ·¨μ†Œ 확인 softeer.ai SOLUTION import sys K, N = map(int, sys.stdin.readline().split()) dp = [] travel_time = [[[0 for i in range(K)] for j in range(K)] for k in range(N)] for i in range(N-1): li

thflgg133.tistory.com

 

 

μ°Έκ³ ν–ˆμŠ΅λ‹ˆλ‹€.. μ–΄λ ΅λ‹€

728x90
λ°˜μ‘ν˜•
Comments