[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์ „๋ ฅ๋ง์„ ๋‘˜๋กœ ๋‚˜๋ˆ„๊ธฐ / ์œ„ํด๋ฆฌ ์ฑŒ๋ฆฐ์ง€ / 9์ฃผ์ฐจ / ํŒŒ์ด์ฌ / Python
Algorithm/Programmers

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์ „๋ ฅ๋ง์„ ๋‘˜๋กœ ๋‚˜๋ˆ„๊ธฐ / ์œ„ํด๋ฆฌ ์ฑŒ๋ฆฐ์ง€ / 9์ฃผ์ฐจ / ํŒŒ์ด์ฌ / Python

728x90
๋ฐ˜์‘ํ˜•

 

๐Ÿ’กsolutions )

๐Ÿ’ฌ ์ „์„ ์ด ์—ฐ๊ฒฐ๋ผ ์žˆ๋Š” ํ˜•ํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” adj ์ธ์ ‘ํ–‰๋ ฌ ๋งŒ๋“ค๊ธฐ

๐Ÿ’ฌ ์ธ์ ‘ํ–‰๋ ฌ์„ for๋ฌธ์œผ๋กœ ๋Œ๋ฉฐ ์—ฐ๊ฒฐ๋ผ ์žˆ๋Š” ์ „์„ ์„ ํ•˜๋‚˜์”ฉ ๋Š์–ด๋ณด๊ธฐ

๐Ÿ’ฌ์ธ์ ‘ํ–‰๋ ฌ์—์„œ remove() ๋ฉ”์†Œ๋“œ๋ฅผ ํ†ตํ•ด ํ•ด๋‹น ์†ก์ „ํƒ‘์„ ์ œ๊ฑฐํ•ด์ค€ ํ›„ ์—ฐ๊ฒฐ ์ƒํƒœ๋ฅผ ์•Œ์•„๋ณด๊ธฐ ์œ„ํ•ด connect()ํ•จ์ˆ˜ ์‹คํ–‰ํ•˜๊ธฐ -> ๋ฐ˜ํ™˜๋˜๋Š” visit ๋ฐฐ์—ด, ์ด๋•Œ ์—ฐ๊ฒฐ๋ผ ์žˆ๋Š” ์†ก์ „ํƒ‘์€ visit๋ฐฐ์—ด์—์„œ 1๋กœ ๋‚˜ํƒ€๋‚˜๊ณ , ๋‚˜๋จธ์ง€ ์†ก์ „ํƒ‘์€ 0์œผ๋กœ ๋‚˜ํƒ€๋‚ด๊ธฐ ๋•Œ๋ฌธ์— ์ด๋“ค์˜ ์นด์šดํŠธ ํ•œ ๊ฐ’์˜ ์ฐจ์ด์˜ ์ตœ์†Œ๊ฐ’์„ ๊ตฌํ•˜๋ฉด ๋œ๋‹ค.

๐Ÿ’ฌ ์ „์„  ๋Š์—ˆ๋˜ ๊ฒƒ์„ ๋‹ค์‹œ ์—ฐ๊ฒฐํ•ด์ฃผ์–ด ๋‹ค์Œ ์†ก์ „ํƒ‘์„ ๋น„๊ตํ•ด์•ผ ํ•œ๋‹ค. -> for๋ฌธ์„ ๋Œ๋ฆฌ๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ˆœ์„œ์— ์ง€์žฅ์„ ์ฃผ์ง€ ์•Š๊ธฐ ์œ„ํ•ด adj[i] = [tmp] + adj[i] ์œผ๋กœ ์ธ์ ‘๋ฆฌ์ŠคํŠธ ๋งจ ์•ž์ชฝ์œผ๋กœ ํ™•์ธํ•œ ์†ก์ „ํƒ‘(tmp)๋ฅผ ๋ถ™์—ฌ์ค˜์•ผ ํ•˜๋Š” ๊ฑธ ์ฃผ์˜ํ•ด์•ผ ํ•œ๋‹ค.

 

๐Ÿ‘จ‍๐Ÿ’ปcode )

def connect(lst, i, adj):
    stack = []
    for i in lst:
        stack.append(i)
    visit = [0]*len(adj)
    visit[i-1] = 1
    while stack:
        a = stack.pop()
        for i in adj[a-1]:
            if not visit[i-1]:
                stack.append(i)
                visit[i-1] = 1
    
    return visit

def solution(n, wires):
    adj = [[] for _ in range(n)]
    
    for a, b in wires:
        adj[a-1].append(b)
        adj[b-1].append(a)
    print(adj)
    min_v = 100
    for i in range(n):
        for j in range(len(adj[i])):
            tmp = adj[i][j]
            adj[i].remove(adj[i][j])
            if adj[i]:
                res = connect(adj[i], i, adj)
                min_v = min(min_v, abs(res.count(0) - res.count(1)))
            adj[i] = [tmp] + adj[i]
    return min_v

 

๐Ÿ“Œdescription )

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - 9์ฃผ์ฐจ_์ „๋ ฅ๋ง์„ ๋‘˜๋กœ ๋‚˜๋ˆ„๊ธฐ

9 [[1,3],[2,3],[3,4],[4,5],[4,6],[4,7],[7,8],[7,9]] 3 7 [[1,2],[2,7],[3,7],[3,4],[4,5],[6,7]] 1

programmers.co.kr


๋ฌธ์ œ ์„ค๋ช…

n๊ฐœ์˜ ์†ก์ „ํƒ‘์ด ์ „์„ ์„ ํ†ตํ•ด ํ•˜๋‚˜์˜ ํŠธ๋ฆฌ ํ˜•ํƒœ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ์ด ์ „์„ ๋“ค ์ค‘ ํ•˜๋‚˜๋ฅผ ๋Š์–ด์„œ ํ˜„์žฌ์˜ ์ „๋ ฅ๋ง ๋„คํŠธ์›Œํฌ๋ฅผ 2๊ฐœ๋กœ ๋ถ„ํ• ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ, ๋‘ ์ „๋ ฅ๋ง์ด ๊ฐ–๊ฒŒ ๋˜๋Š” ์†ก์ „ํƒ‘์˜ ๊ฐœ์ˆ˜๋ฅผ ์ตœ๋Œ€ํ•œ ๋น„์Šทํ•˜๊ฒŒ ๋งž์ถ”๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.

์†ก์ „ํƒ‘์˜ ๊ฐœ์ˆ˜ n, ๊ทธ๋ฆฌ๊ณ  ์ „์„  ์ •๋ณด wires๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. ์ „์„ ๋“ค ์ค‘ ํ•˜๋‚˜๋ฅผ ๋Š์–ด์„œ ์†ก์ „ํƒ‘ ๊ฐœ์ˆ˜๊ฐ€ ๊ฐ€๋Šฅํ•œ ๋น„์Šทํ•˜๋„๋ก ๋‘ ์ „๋ ฅ๋ง์œผ๋กœ ๋‚˜๋ˆ„์—ˆ์„ ๋•Œ, ๋‘ ์ „๋ ฅ๋ง์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์†ก์ „ํƒ‘ ๊ฐœ์ˆ˜์˜ ์ฐจ์ด(์ ˆ๋Œ€๊ฐ’)๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.


์ œํ•œ์‚ฌํ•ญ

  • n์€ 2 ์ด์ƒ 100 ์ดํ•˜์ธ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.
  • wires๋Š” ๊ธธ์ด๊ฐ€ n-1์ธ ์ •์ˆ˜ํ˜• 2์ฐจ์› ๋ฐฐ์—ด์ž…๋‹ˆ๋‹ค.
    • wires์˜ ๊ฐ ์›์†Œ๋Š” [v1, v2] 2๊ฐœ์˜ ์ž์—ฐ์ˆ˜๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์œผ๋ฉฐ, ์ด๋Š” ์ „๋ ฅ๋ง์˜ v1๋ฒˆ ์†ก์ „ํƒ‘๊ณผ v2๋ฒˆ ์†ก์ „ํƒ‘์ด ์ „์„ ์œผ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
    • 1 ≤ v1 < v2 ≤ n ์ž…๋‹ˆ๋‹ค.
    • ์ „๋ ฅ๋ง ๋„คํŠธ์›Œํฌ๊ฐ€ ํ•˜๋‚˜์˜ ํŠธ๋ฆฌ ํ˜•ํƒœ๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ๋Š” ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

nwiresresult

9 [[1,3],[2,3],[3,4],[4,5],[4,6],[4,7],[7,8],[7,9]] 3
4 [[1,2],[2,3],[3,4]] 0
7 [[1,2],[2,7],[3,7],[3,4],[4,5],[6,7]] 1

์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

์ž…์ถœ๋ ฅ ์˜ˆ #1

  • ๋‹ค์Œ ๊ทธ๋ฆผ์€ ์ฃผ์–ด์ง„ ์ž…๋ ฅ์„ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋ฅผ ๋‚˜ํƒ€๋‚ธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • 4๋ฒˆ๊ณผ 7๋ฒˆ์„ ์—ฐ๊ฒฐํ•˜๋Š” ์ „์„ ์„ ๋Š์œผ๋ฉด ๋‘ ์ „๋ ฅ๋ง์€ ๊ฐ 6๊ฐœ์™€ 3๊ฐœ์˜ ์†ก์ „ํƒ‘์„ ๊ฐ€์ง€๋ฉฐ, ์ด๋ณด๋‹ค ๋” ๋น„์Šทํ•œ ๊ฐœ์ˆ˜๋กœ ์ „๋ ฅ๋ง์„ ๋‚˜๋ˆŒ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  • ๋˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” 3๋ฒˆ๊ณผ 4๋ฒˆ์„ ์—ฐ๊ฒฐํ•˜๋Š” ์ „์„ ์„ ๋Š์–ด๋„ ์ตœ์„ ์˜ ์ •๋‹ต์„ ๋„์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 


 

๋ฐ˜์‘ํ˜•