๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“– Problem Solution/Programmers

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋„คํŠธ์›Œํฌ Swift

by Fomagran ๐Ÿ’ป 2020. 12. 10.
728x90
๋ฐ˜์‘ํ˜•

Source Code


Solution


ํ•ด๋‹น ๋ฌธ์ œ๋Š” DFS์— ๊ด€๋ จ๋œ ๋ฌธ์ œ๋‹ค.

 

1. ์ปดํ“จํ„ฐ์™€ ์—ฐ๊ฒฐ๋˜์–ด์žˆ๋Š”์ง€ ์•„๋‹Œ์ง€๋ฅผ ํ™•์ธํ•œ๋‹ค.

-> 2์ฐจ์› ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด ์—ฐ๊ฒฐ๋œ ๋„คํŠธ์›Œํฌ๋“ค๋งŒ ๋ชจ์•„์ค€๋‹ค. ์ฆ‰, ๊ฐ™์€ ๋ฐฐ์—ด์— ์žˆ๋Š” ์ปดํ“จํ„ฐ๋Š” ํ•˜๋‚˜์˜ ๋„คํŠธ์›Œํฌ์ด๋‹ค.

๊ณ ๋กœ 1์ด๋ผ๊ณ  ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ์ปดํ“จํ„ฐ๋ฅผ ๊ฐ™์€ ๋ฐฐ์—ด์— ๋„ฃ์–ด์ค€๋‹ค.

 

2. ํ•˜๋‚˜์˜ ์ปดํ“จํ„ฐ๋ผ๋„ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์œผ๋ฉด ํ•˜๋‚˜์˜ ๋„คํŠธ์›Œํฌ์ด๋ฏ€๋กœ ๊ฐ ์ปดํ“จํ„ฐ ๋งˆ๋‹ค ์—ฐ๊ฒฐ๋˜์–ด์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•˜์—ฌ ์žฌ๊ท€๋กœ ๋ชจ๋“  ์—ฐ๊ฒฐ๋œ ์ปดํ“จํ„ฐ์˜ ์—ฐ๊ฒฐ์„ ํ™•์ธํ•œ๋‹ค.

ex) 1,2,3,4์˜ ์ปดํ“จํ„ฐ๊ฐ€ ์žˆ๊ณ  1์ด 234 ์ปดํ“จํ„ฐ์™€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์„๋•Œ 2๊ฐ€ ์–ด๋–ค ์ปดํ“จํ„ฐ๋ž‘ ์—ฐ๊ฒฐ๋˜์–ด์žˆ๋Š”์ง€ ํ™•์ธ ๋˜ 2๋ž‘ ์—ฐ๊ฒฐ๋œ ์ปดํ“จํ„ฐ๊ฐ€ ์–ด๋–ค ์ปดํ“จํ„ฐ๋ž‘ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ด์ค€๋‹ค.

 

3.๋งˆ์ง€๋ง‰์œผ๋กœ ๊ฐ™์€ ์—ฐ๊ฒฐ๋กœ๋œ ๋„คํŠธ์›Œํฌ ์ˆ˜๋ฅผ ์„ธ์–ด์ค€๋‹ค.

 

Problem


 

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ๋„คํŠธ์›Œํฌ

๋„คํŠธ์›Œํฌ๋ž€ ์ปดํ“จํ„ฐ ์ƒํ˜ธ ๊ฐ„์— ์ •๋ณด๋ฅผ ๊ตํ™˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ์—ฐ๊ฒฐ๋œ ํ˜•ํƒœ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ปดํ“จํ„ฐ A์™€ ์ปดํ“จํ„ฐ B๊ฐ€ ์ง์ ‘์ ์œผ๋กœ ์—ฐ๊ฒฐ๋˜์–ด์žˆ๊ณ , ์ปดํ“จํ„ฐ B์™€ ์ปดํ“จํ„ฐ C๊ฐ€ ์ง์ ‘์ ์œผ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ

programmers.co.kr

์ƒˆ๋กญ๊ฒŒ ์•Œ๊ฒŒ ๋œ๊ฒƒ

๋ฐฐ์—ด ์ค‘ ์–ด๋– ํ•œ ์กฐ๊ฑด์—์„œ ํ•„ํ„ฐ๋ง ํ–ˆ์„๋•Œ ๋งž๋Š” ์กฐ๊ฑด์˜ ์ธ๋ฑ์Šค๋งŒ ๋ชจ์œผ๋Š”๋ฒ•

ex)๋ฐฐ์—ด ์ค‘ ๊ฐ’์ด 0์ธ ์ธ๋ฑ์Šค๋งŒ ํ•œ ๊ณณ์— ๋ชจ์œผ๋Š”๋ฒ•

array.enumrated().filter{$0.element == 0 }.map{$0.offset}

 

๋‹ค๋ฅธ ์‚ฌ๋žŒ ํ’€์ด

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import Foundation
 
func solution(_ n:Int, _ computers:[[Int]]) -> Int {
    var visit: [Bool= Array(repeating: false, count: n)
    var answer: Int = 0
 
    func bfs(_ vertax: Int) {
        visit[vertax] = true
        for i in 0..<n {
            if computers[vertax][i] == 1 && visit[i] == false {
                bfs(i)
            }
        }
    }
 
    for i in 0..<n {
        if !visit[i] {
            answer += 1
            bfs(i)
        }
    }
 
    return answer
}

ํ‰์†Œ์—” ํ…Œ์ŠคํŠธ๋งŒ ํ†ต๊ณผํ•˜๋ฉด (์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ์•ˆ๋‚˜๋ฉด) ํšจ์œจ์ ์œผ๋กœ ํ’€์—ˆ๋‚˜๋ณด๋‹ค ํ•˜๊ณ  ๋„˜์–ด๊ฐ”๋Š”๋ฐ 

 

์ฒ˜์Œ์œผ๋กœ ๋‹ค๋ฅธ ์‚ฌ๋žŒ ํ’€์ด๋ž‘ ๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ณ„๋กœ ์‹œ๊ฐ„์ด ์–ผ๋งˆ๋‚˜ ๊ฑธ๋ฆฌ๋Š”์ง€ ํ™•์ธํ•ด๋ณด์•˜๋‹ค.

 

์ขŒ์ธก์ด ๋‹ค๋ฅธ ์‚ฌ๋žŒ ํ’€์ด,์šฐ์ธก์ด ๋‚ด ํ’€์ด๊ฐ€ ๊ฑธ๋ฆฐ ์‹œ๊ฐ„์ธ๋ฐ 10๋ฐฐ์—์„œ ๋งŽ๊ฒŒ๋Š” 20๋ฐฐ์ฐจ์ด๊นŒ์ง€ ๋‚œ๋‹ค...

์ด์   ํ’€์—ˆ๋‹ค๊ณ  ๊ทธ๋ƒฅ ๋„˜์–ด๊ฐ€๋Š” ๊ฒƒ์ด ์•„๋‹Œ ๋” ํšจ์œจ์ ์œผ๋กœ ํ‘ธ๋Š” ๋ฐฉ๋ฒ•์„ ๊ณ ๋ฏผํ•˜๊ณ  ๋„˜์–ด๊ฐ€์•ผ๊ฒ ๋‹ค....

 

๊ทธ๋ž˜๋„ ์ฒ˜์Œ 3๋‹จ๊ณ„๋กœ ๋“ค์–ด์˜จ๊ฑฐ์น˜๊ณค ๋‚˜์˜์ง€ ์•Š์•˜๋‹ค ใ…Žใ…Žใ…Ž

 

728x90
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€