Problem
์ฝ๋ฉํ ์คํธ ์ฐ์ต - ์์
5 [[4, 3], [4, 2], [3, 2], [1, 2], [2, 5]] 2
programmers.co.kr
Solution
์ด๋ฒ ๋ฌธ์ ๋ ํ๋ก์ด๋ ์์ฌ ์ผ๋ก ํ์ด์ผ ํ๋ ๊ทธ๋ํ ๋ฌธ์ ์ ๋๋ค.
1. ๋ชจ๋ ์น๋ถ๋ฅผ ์ ์ฅํ ์ด์ค ๋ฐฐ์ด์ ๋ง๋ ๋ค.
1๋ถํฐ n๊น์ง์ ์ ์๋ค์ ์น๋ถ๋ฅผ ๋ด์ ์ด์ค ๋ฐฐ์ด์ ๋ง๋ค์ด์ค๋๋ค.
1๋ถํฐ ์์ํ๋ฏ๋ก n+1 ํฌ๊ธฐ๋ก ๊ฐ์ 0์ผ๋ก ๊ฐ์ง๊ณ ์๋ ๋ฐฐ์ด์ n+1๊ฐ๋ฅผ ๋ง๋ค์ด์ค๋๋ค.
n+1๊ฐ์ฉ์ ๋ง๋ค์ด์ฃผ๋ ์ด์ ๋ 0๋ฒ ์ธ๋ฑ์ค๋ฅผ ๋ฌด์ํ๊ธฐ ํ๊ธฐ ์ํด์์ ๋๋ค.
(win ๋ฐฐ์ด์ ์ฐธ๊ณ ํด์ฃผ์ธ์)
2. results๋ฅผ ์ํํ์ฌ ์น๋ถ์ ๋ํ ๊ฐ์ ์ ์ฅํ๋ค.
results์์ ์๋ ๊ฐ ์ค 0๋ฒ์งธ๋ ์ด๊ธด ์ฌ๋ 1๋ฒ์งธ๋ ์ง ์ฌ๋์ด๋ฏ๋ก
์น๋ถ๋ฅผ ๋ด๋ ๋ฐฐ์ด [result[0]][result[1]] ์ ๊ฐ์ 1๋ก ๋ฐ๊ฟ์ค๋๋ค.
0์ ๋ชจ๋ฅด๋ ์ํ 1์ ์ด๊ธด ์ํ๋ก ์ ์ฅํ๊ฒ ์ต๋๋ค.
(results.forEach๋ฅผ ํ์ธํด์ฃผ์ธ์!)
3. ํ๋ก์ด๋ ์์ฌ์ผ๋ก ์ค๊ฐ์ ์๋ ๊ฐ์ ์ฒดํฌํด์ค๋ค.
i,j,k 3์ค for๋ฌธ์ ๋ง๋ค์ด i์ k์ ์ค๊ฐ์ ์๋ j๊ฐ kํํ ์ง๋์ง ์ด๊ธฐ๋ ์ฒดํฌํด์ค๋๋ค.
๋ง์ฝ i๊ฐ j๋ฅผ ์ด๊ฒผ๊ณ k๊ฐ i๋ฅผ ์ด๊ฒผ๋ค๋ฉด k๋ j๋ฅผ ์ด๊ธธ ์ ์์ต๋๋ค.
๊ณ ๋ก ์น๋ถ๋ฅผ ๋ด๋ ๋ฐฐ์ด์ [k][j] ๋ฒ์งธ๋ฅผ 1๋ก ๋ฐ๊ฟ์ค๋๋ค.
( checkMiddleByFloyd ํจ์๋ฅผ ์ฐธ๊ณ ํด์ฃผ์ธ์!)
4. ์์๋ฅผ ์ ์ ์๋ ์ ์์ ์๋ฅผ ๊ณ์ฐํด ๋ฐํํ๋ค.
1๋ถํฐ n๊น์ง ์ํ๋ฅผ ํ๋ ์ด์ค for๋ฌธ์ ๋ง๋ค์ด ๋ชจ๋ ์ ์์ ์น๋ถ๋ฅผ ์ํํฉ๋๋ค.
i ์ ์์ j์ ์์ ์น๋ถ๋ฅผ ์๊ธฐ ์ํด์ ์น๋ถ๋ฅผ ๋ด๋ ๋ฐฐ์ด์์ i๊ฐ j๋ฅผ ์ด๊ฒผ๊ฑฐ๋ j๊ฐ i๋ฅผ ์ด๊ฒผ๋ค๋ฉด ์ ์ ์์ ๊ฒ์ ๋๋ค.
์ฆ [i][j]๊ฐ 1์ด๊ฑฐ๋ [j][i]๊ฐ 1์ด๋ผ๋ฉด ์ ์ ์๋ ์ํ์ ๋๋ค.
์ด๋ ๊ฒ ์ ์ ์๋ ์ํ๊ฐ n์์ ์์ ์ ๋บ ๊ฐ ์ฆ, n-1์ด๋ผ๋ฉด ๋ชจ๋ ์ ์์์ ์น๋ถ๋ฅผ ์ ์ ์์ผ๋ฏ๋ก ์์๋ฅผ ์ ์ ์์ต๋๋ค.
๋ชจ๋ ์ํ๋ฅผ ํ๋ฉด์ ์ด๋ ๊ฒ ๋ชจ๋ ์ ์์์ ์น๋ถ๋ฅผ ์ ์ ์๋ ์ ์์ ์๋ฅผ ๋ฐํํด์ค๋๋ค.
( canKnowRankCount ํจ์๋ฅผ ์ฐธ๊ณ ํด์ฃผ์ธ์! )
Source Code
1์ฐจ ํ์ด
์ฒ์์ ๋๊ฐ ๋๊ตด ์ด๊ฒผ๊ณ ์ก๋์ง๋ง ๋ด๊ณ
์ด๊ธด ์ฌ๋๊ณผ ์ง ์ฌ๋์ ํฉ์ณ์ ์์ ์ ๋บ ๋ชจ๋ ์ฌ๋์ด ๋ด๊ฒจ์๋ค๋ฉด ์์๋ฅผ ์ ์ ์๊ฒ ์ง๋ผ๊ณ ์์ฒญ ์ฌ์ด ๋ฌธ์ ๋ค ํ๊ณ ํ์๋๋ฐ...
๋๊ฐ ๋๊ตด ์ด๊ธฐ๊ณ ์ง๋๋ง๋ค ๊ฐ์ด ๋ฐ๋๋๋ฐ ์ด๋ฌ๋ฉด ๋ชจ๋ ๊ฐ์ด ๋ฐ๋์ด์ผ ํ๋ค.
๊ทธ๋์ ๊ฒฐ๊ตญ ๊ตฌ๊ธ๋ง์ ํตํด์ ํ๋ก์ด๋ ์์ฌ๋ก ํ์ด์ผํ๋ค๋ ๊ฒ์ ์๊ฒ๋จ...
import Foundation
func solution(_ n:Int, _ results:[[Int]]) -> Int {
var win:[[Int]] = (0...n).map{[$0]}
var lose:[[Int]] = (0...n).map{[$0]}
var answer:Int = 0
results.forEach{
win[$0[0]].append($0[1])
lose[$0[1]].append($0[0])
}
for i in 1..<win.count {
let count = Set((win[i].map{win[$0]} + lose[i].map{lose[$0]}).flatMap{$0}).count
if count == n {
answer += 1
}
}
return answer
}
Reference
์ด ๋ถ์ ๋ธ๋ก๊ทธ๋ฅผ ์ฐธ๊ณ ํ์ต๋๋ค.
[C++, Swift][ํ๋ก๊ทธ๋๋จธ์ค] ์์
๋ฌธ์ ์ค๋ช ์ ๋๋ณด๊ธฐ๋ฅผ ๋๋ฌ์ฃผ์ธ์ ๋๋ณด๊ธฐ ๋ฌธ์ ๋งํฌ : programmers.co.kr/learn/courses/30/lessons/49191 ๋ฌธ์ ์ค๋ช n๋ช ์ ๊ถํฌ์ ์๊ฐ ๊ถํฌ ๋ํ์ ์ฐธ์ฌํ๊ณ ๊ฐ๊ฐ 1๋ฒ๋ถํฐ n๋ฒ๊น์ง ๋ฒํธ๋ฅผ ๋ฐ์์ต๋๋ค. ๊ถํฌ ๊ฒฝ
9967han.tistory.com
'๐ Problem Solution > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Swift] ํ๋ก๊ทธ๋๋จธ์ค 2018 Summer/Winter Coding ๋ฐฉ๋ฌธ ๊ธธ์ด (0) | 2021.05.20 |
---|---|
[Swift] ํ๋ก๊ทธ๋๋จธ์ค ์ฝ์์ ๊ฐ์์ ๋ง์ (0) | 2021.05.18 |
[Swift] ํ๋ก๊ทธ๋๋จธ์ค ๋ก๋์ ์ต๊ณ ์์์ ์ต์ ์์ (0) | 2021.05.08 |
[Swift] ํ๋ก๊ทธ๋๋จธ์ค 3์ง๋ฒ ๋ค์ง๊ธฐ (0) | 2021.05.08 |
[Swift] ํ๋ก๊ทธ๋๋จธ์ค ๋ด์ (0) | 2021.05.05 |
๋๊ธ