πŸ“– Problem Solution/Programmers

[Swift] 2021 KAKO BLIND RECUITMENT ν•©μŠΉ νƒμ‹œ μš”κΈˆ

Fomagran πŸ’» 2021. 3. 27. 20:33
728x90
λ°˜μ‘ν˜•

 

 

Problem

 

 

μ½”λ”©ν…ŒμŠ€νŠΈ μ—°μŠ΅ - ν•©μŠΉ νƒμ‹œ μš”κΈˆ

6 4 6 2 [[4, 1, 10], [3, 5, 24], [5, 6, 2], [3, 1, 41], [5, 1, 24], [4, 6, 50], [2, 4, 66], [2, 3, 22], [1, 6, 25]] 82 7 3 4 1 [[5, 7, 9], [4, 6, 4], [3, 6, 1], [3, 2, 3], [2, 1, 6]] 14 6 4 5 6 [[2,6,6], [6,3,7], [4,6,7], [6,5,11], [2,5,12], [5,3,20], [2,4

programmers.co.kr


Solution

ν•΄λ‹Ή λ¬Έμ œλŠ” Floyd Warshall μ•Œκ³ λ¦¬μ¦˜μœΌλ‘œ ν’€μ–΄μ•Ό ν•˜λŠ” λ¬Έμ œμ΄λ‹€.

 

1. λͺ¨λ“  지점 μ—°κ²°ν•˜κΈ°

 

μš°μ„  λͺ¨λ“  지점에 λŒ€ν•œ 연결을 μ •μˆ˜μ—μ„œ κ°€μž₯ 큰 κ°’μœΌλ‘œ λ§Œλ“€μ–΄μ€€λ‹€.

 

κ·Έ λ‹€μŒ 지점 쀑 자기 μžμ‹ μœΌλ‘œ μ—°κ²°λ˜λŠ” 경우 1μ—μ„œ 1 2μ—μ„œ 2 3μ—μ„œ 3... 등은 0으둜 λ§Œλ“€μ–΄μ€€λ‹€.

 

그리곀 μ£Όμ–΄μ§„ faresμ•ˆμ— μžˆλŠ” 연결에 λŒ€ν•œ 값을 μ„ΈνŒ…ν•΄μ€€λ‹€.

 

2. ν”Œλ‘œμ΄λ“œ 와샬 μ•Œκ³ λ¦¬μ¦˜ μ‚¬μš©ν•˜κΈ°

 

n개의 지점이 μžˆλ‹€λ©΄ μΆœλ°œν•  지점과 쀑간에 λ“€λ¦¬λŠ” 지점 λ„μ°©ν•˜λŠ” 지점 μ΄λ ‡κ²Œ 3개λ₯Ό for문으둜 각각 μ‹€ν–‰μ‹œμΌœμ€€λ‹€.

 

μ΄λ ‡κ²Œ ν•˜λ©΄ 쀑간에 κ±°μ³κ°€λŠ” λͺ¨λ“  지점에 λŒ€ν•œ 값을 μ•Œ 수 μžˆλ‹€.

 

μ—¬κΈ°μ„œ μ£Όμ˜ν•  점은 νš¨μœ¨μ„±μ„ μ΅œλŒ€ν™” ν•˜κΈ° μœ„ν•΄μ„œ 좜발과 쀑간에 λ“€λ¦¬λŠ” 지점이 κ°™λ‹€κ±°λ‚˜ 좜발과 쀑간이 μ •μˆ˜μ˜ κ°€μž₯ 큰 값이면

 

λ„μ°©μ§€μ κΉŒμ§€ μ•ˆκ°€λ„ λ˜λ―€λ‘œ νŒ¨μŠ€ν•΄μ€€λ‹€.

 

3.κ°€μž₯ μž‘μ€ κ°’ μ°ΎκΈ°

 

μΆœλ°œμ§€μ μ—μ„œ μ–΄λŠ 지점을 거쳐야 a와 b에 λ„μ°©ν•˜λŠ” 값이 κ°€μž₯ μž‘μ€μ§€ μ•Œμ•„λ‚Έλ‹€.

 

(거쳐야 ν•˜λŠ” 지점 쀑 μΆœλ°œμ§€μ ,a,bκ°€ ν¬ν•¨λ˜μ–΄ μžˆμœΌλ―€λ‘œ 쀑간지점을 μ•ˆκ±°μΉ˜λŠ” κ²½μš°λ„ ν¬ν•¨λ˜μ–΄μžˆλ‹€.)


Source Code

 


P.S

 

μ²˜μŒμ—” λ‹€μ΅μŠ€νŠΈλΌ μ•Œκ³ λ¦¬μ¦˜μœΌλ‘œ 풀이λ₯Ό ν–ˆλŠ”λ° 정확성은 λͺ¨λ‘ λ§žμ•˜μ§€λ§Œ νš¨μœ¨μ„±μ—μ„œ λͺ¨λ‘ μ‹œκ°„μ΄ˆκ³Όκ°€ λ–΄λ‹€.

 

κ·Έλž˜μ„œ μ§ˆλ¬Έν•˜κΈ°λ₯Ό λ΄λ΄€λŠ”λ° μ΅œμ•…μ˜ λ‹€μ΅μŠ€νŠΈλΌλŠ” O( N * ElogN ), ν”Œλ‘œμ΄λ“œλŠ” O( N3 )의 μ‹œκ°„μ΄ μ†Œμš”λ  수 μžˆλ‹€κ³  μ“°μ—¬μžˆμ—ˆλ‹€.

 

언어에 λ”°λΌμ„œ ν†΅κ³Όλ˜λŠ” κ²½μš°λ„ μžˆμ§€λ§Œ κ·Έλ ‡μ§€ μ•Šμ„ 경우 ν”Œλ‘œμ΄λ“œ 와샬 μ•Œκ³ λ¦¬μ¦˜μœΌλ‘œ ν’€κ±°λ‚˜ λ‹€μ΅μŠ€νŠΈλΌλ‘œ μ΅œμ„ μ˜ 경우λ₯Ό λ§Œλ“€μ–΄μ„œ

 

ν‘ΈλŠ” 방법이 μžˆμ—ˆλŠ”λ° κ·Έλƒ₯ ν”Œλ‘œμ΄λ“œ μ™€μƒ¬λ‘œ κ°ˆμ•„νƒ”λ‹€.

 

ν”Œλ‘œμ΄λ“œ 와샬이 훨씬 κ°„λ‹¨ν•˜κ³  μ‰½κ²Œ κ΅¬ν˜„ν•  수 μžˆμ—ˆλ‹€.

 

(λ‹€μ΅μŠ€νŠΈλΌλ₯Ό 계속 효율적으둜 풀어보렀고 ν•˜λ‹ˆκΉ...점점 ν”Œλ‘œμ΄λ“œ 와샬 μ•Œκ³ λ¦¬μ¦˜κ³Ό λΉ„μŠ·ν•΄μ§€λŠ” λŠλ‚Œμ€....뭐지..)

 

 

728x90
λ°˜μ‘ν˜•