Algorithm Problem/Python

[python] SWEA - 1238. [S/W ๋ฌธ์ œํ•ด๊ฒฐ ๊ธฐ๋ณธ] 10์ผ์ฐจ - Contact

deo2kim 2020. 8. 16. 08:46
๋ฐ˜์‘ํ˜•

๐Ÿค”๋ฌธ์ œ ํ•ด๊ฒฐ

1. D4 | BFS

2. ์ฃผ์–ด์ง„ ์ธํ’‹๊ฐ’์œผ๋กœ ์ธ์ ‘๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“ ๋‹ค.

3. ๋˜‘๊ฐ™์€ ๋…ธ๋“œ๋ฅผ ํƒ์ƒ‰ํ•˜๋Š” ๊ฒƒ์„ ๋ง‰๊ธฐ ์œ„ํ•ด ๋ฐฉ๋ฌธ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•  visited ๋ฆฌ์ŠคํŠธ, BFS์—์„œ ๊ฐ™์€ ๊นŠ์ด์—์„œ ๊ฐ€์žฅ ํฐ ์ˆซ์ž๋ฅผ ๊ธฐ์–ตํ•ด๋‘˜ result๋ฅผ ๋งŒ๋“ค๊ณ  deque๋ฅผ ์ด์šฉํ•ด BFS ํƒ์ƒ‰์„ ํ•œ๋‹ค.

4. ์žฌ๊ท€ ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด์„œ BFS์˜ ๊นŠ์ด๋งˆ๋‹ค result์˜ ๊ฐ’์„ ๊ฐฑ์‹ ํ•ด์ค€๋‹ค.

5. ๋งˆ์ง€๋ง‰์œผ๋กœ ๊ฐฑ์‹ ๋œ result ๋ฅผ ์ถœ๋ ฅ

 

๐Ÿ’จ

 

๐Ÿ’ป์†Œ์Šค ์ฝ”๋“œ

from _collections import deque


def contact(current_q):
    global result
    # ๋งˆ์ง€๋ง‰ ์—ฐ๋ฝ๋ฐ›์€ ์‚ฌ๋žŒ๋“ค ์ค‘ ๊ฐ€์žฅ ํฐ ๊ฐ’
    result = max(current_q)
    
    # ๋‹ค์Œ ์—ฐ๋ฝ ๋ฐ›์„ ์‚ฌ๋žŒ๋“ค์ด ๋“ค์–ด๊ฐˆ ๋ฆฌ์ŠคํŠธ 
    next_q = deque()
    
    # ํ˜„์žฌ ์—ฐ๋ฝ๋ฐ›์€ ์‚ฌ๋žŒ๋“ค์ด ์—ฐ๋ฝ ํ•  ์‚ฌ๋žŒ๋“ค์„ ์ฐพ๋Š” ๊ณผ์ •
    while current_q:
        c = current_q.pop()
        for neighbor in adj[c]:
            if visited[neighbor] == 0:
                next_q.append(neighbor)
                visited[neighbor] = 1
                
    # ๋งŒ์•ฝ ๋‹ค์Œ์— ์—ฐ๋ฝ ๋ฐ›์„ ์‚ฌ๋žŒ์ด ์žˆ์œผ๋ฉด
    if next_q:
        contact(next_q)


for tc in range(1, 11):
    n, start = map(int, input().split())
    # ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“ ๋‹ค
    adj_list = list(map(int, input().split()))
    adj = {i:[] for i in range(1, 101)}
    for i in range(0, n, 2):
        adj[adj_list[i]].append(adj_list[i+1])

    # ๋ฐฉ๋ฌธ ์ฒดํฌ ๋ฆฌ์ŠคํŠธ, ๊ฒฐ๊ณผ ๊ฐ’ ์ €์žฅ, q
    visited = [0]*101
    visited[start] = 1
    result = 0
    q = deque()
    q.append(start)
    
    contact(q)
    print('#{} {}'.format(tc, result))
 

 

๐Ÿ“•๋ฌธ์ œ ํ™•์ธ

์ถœ์ฒ˜: SW Expert Academy

๋งํฌ: https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV15B1cKAKwCFAYD&categoryId=AV15B1cKAKwCFAYD&categoryType=CODE

 

SW Expert Academy

SW ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์—ญ๋Ÿ‰ ๊ฐ•ํ™”์— ๋„์›€์ด ๋˜๋Š” ๋‹ค์–‘ํ•œ ํ•™์Šต ์ปจํ…์ธ ๋ฅผ ํ™•์ธํ•˜์„ธ์š”!

swexpertacademy.com

๋น„์ƒ์—ฐ๋ฝ๋ง๊ณผ ์—ฐ๋ฝ์„ ์‹œ์ž‘ํ•˜๋Š” ๋‹น๋ฒˆ์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ, ๊ฐ€์žฅ ๋‚˜์ค‘์— ์—ฐ๋ฝ์„ ๋ฐ›๊ฒŒ ๋˜๋Š” ์‚ฌ๋žŒ ์ค‘ ๋ฒˆํ˜ธ๊ฐ€ ๊ฐ€์žฅ ํฐ ์‚ฌ๋žŒ์„ ๊ตฌํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•˜์‹œ์˜ค.
 
[์˜ˆ์‹œ]

์•„๋ž˜๋Š” ๋น„์ƒ์—ฐ๋ฝ๋ง์„ ๋‚˜ํƒ€๋‚ธ ๊ทธ๋ฆผ์ด๋‹ค.

 
๊ฐ ์›์€ ๊ฐœ๊ฐœ์ธ์„ ์˜๋ฏธํ•˜๋ฉฐ, ์› ์•ˆ์˜ ์ˆซ์ž๋Š” ๊ทธ์‚ฌ๋žŒ์˜ ๋ฒˆํ˜ธ๋ฅผ ๋‚˜ํƒ€๋‚ด๊ณ  ๋นจ๊ฐ„์›์€ ์—ฐ๋ฝ์„ ์‹œ์ž‘ํ•˜๋Š” ๋‹น๋ฒˆ์„ ์˜๋ฏธํ•œ๋‹ค.

ํ™”์‚ดํ‘œ๋Š” ์—ฐ๋ฝ์ด ๊ฐ€๋Šฅํ•œ ๋ฐฉํ–ฅ์„ ์˜๋ฏธํ•œ๋‹ค.

์œ„์˜ ์˜ˆ์‹œ์—์„œ๋Š” 7๋ฒˆ๊ณผ 1๋ฒˆ์€ ์„œ๋กœ ์—ฐ๋ฝ์ด ๊ฐ€๋Šฅํ•˜๋‹ค,

ํ•˜์ง€๋งŒ 2๋ฒˆ๊ณผ 7๋ฒˆ์˜ ๊ฒฝ์šฐ 2๋ฒˆ์€ 7๋ฒˆ์—๊ฒŒ ์—ฐ๋ฝํ•  ์ˆ˜ ์žˆ์ง€๋งŒ 7๋ฒˆ์€ 2๋ฒˆ์—๊ฒŒ ์—ฐ๋ฝํ•  ์ˆ˜ ์—†๋‹ค.
 
๋น„์ƒ์—ฐ๋ฝ๋ง์ด ๊ฐ€๋™๋˜๋ฉด ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ์—ฐ๋ฝ์„ ์‹œ์ž‘ํ•˜๋Š” ๋‹น๋ฒˆ์ธ 2๋ฒˆ์€ ์—ฐ๋ฝ ๊ฐ€๋Šฅํ•œ 7๋ฒˆ๊ณผ 15๋ฒˆ์— ๋™์‹œ์— ์—ฐ๋ฝ์„ ์ทจํ•œ๋‹ค (๋‹ค์ž ๊ฐ„ ํ†ตํ™”๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ๊ฐ€์ •).

 

 
๊ทธ ๋‹ค์Œ ์•„๋ž˜์™€ ๊ฐ™์ด 7๋ฒˆ์€ 1๋ฒˆ์—๊ฒŒ, 15๋ฒˆ์€ 4๋ฒˆ์—๊ฒŒ ์—ฐ๋ฝ์„ ์ทจํ•œ๋‹ค (์ด ๊ณผ์ •์€ ๋™์‹œ์— ์ผ์–ด๋‚œ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค).

 


๊ทธ ๋‹ค์Œ ์•„๋ž˜์™€ ๊ฐ™์ด 1๋ฒˆ์€ 8๋ฒˆ๊ณผ 17๋ฒˆ์—๊ฒŒ ๋™์‹œ์— ์—ฐ๋ฝํ•˜๋ฉฐ, ์ด์™€ ๋™์‹œ์— 4๋ฒˆ์€ 10๋ฒˆ์—๊ฒŒ ์—ฐ๋ฝํ•œ๋‹ค.

7๋ฒˆ๊ณผ 2๋ฒˆ์˜ ๊ฒฝ์šฐ๋Š” ์ด๋ฏธ ์—ฐ๋ฝ์„ ๋ฐ›์€ ์ƒํƒœ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์‹œ ์—ฐ๋ฝํ•˜์ง€ ์•Š๋Š”๋‹ค.

 


์œ„์˜ ๋ชจ์Šต์ด ์—ฐ๋ฝ์ด ๋๋‚œ ๋งˆ์ง€๋ง‰ ๋ชจ์Šต์ด ๋˜๋ฉฐ, ๋งˆ์ง€๋ง‰์— ๋™์‹œ์— ์—ฐ๋ฝ ๋ฐ›์€ ์‚ฌ๋žŒ์€ 8๋ฒˆ, 10๋ฒˆ, 17๋ฒˆ์˜ ์„ธ ๋ช…์ด๋‹ค.

์ด ์ค‘์—์„œ ๊ฐ€์žฅ ์ˆซ์ž๊ฐ€ ํฐ ์‚ฌ๋žŒ์€ 17๋ฒˆ์ด๋ฏ€๋กœ 17์„ ๋ฐ˜ํ™˜ํ•˜๋ฉด ๋œ๋‹ค.
 
โ€ป 3, 6, 11, 22๋ฒˆ์€ ์‹œ๊ฐ„์ด ์ง€๋‚˜๋„ ์—ฐ๋ฝ์„ ๋ฐ›์ง€ ๋ชปํ•œ๋‹ค.
 
[์ œ์•ฝ ์‚ฌํ•ญ]

์—ฐ๋ฝ ์ธ์›์€ ์ตœ๋Œ€ 100๋ช…์ด๋ฉฐ, ๋ถ€์—ฌ๋  ์ˆ˜ ์žˆ๋Š” ๋ฒˆํ˜ธ๋Š” 1์ด์ƒ, 100์ดํ•˜์ด๋‹ค.

๋‹จ, ์˜ˆ์‹œ์—์„œ 5๋ฒˆ์ด ์กด์žฌํ•˜์ง€ ์•Š๋“ฏ์ด ์ค‘๊ฐ„ ์ค‘๊ฐ„์— ๋น„์–ด์žˆ๋Š” ๋ฒˆํ˜ธ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค.

ํ•œ ๋ช…์˜ ์‚ฌ๋žŒ์ด ๋‹ค์ˆ˜์˜ ์‚ฌ๋žŒ์—๊ฒŒ ์—ฐ๋ฝ์ด ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ ํ•ญ์ƒ ๋‹ค์ž ๊ฐ„ ํ†ตํ™”๋ฅผ ํ†ตํ•ด ๋™์‹œ์— ์ „๋‹ฌํ•œ๋‹ค.

์—ฐ๋ฝ์ด ํผ์ง€๋Š” ์†๋„๋Š” ํ•ญ์ƒ ์ผ์ •ํ•˜๋‹ค (์ „ํ™”๋ฅผ ๋ฐ›์€ ์‚ฌ๋žŒ์ด ๋‹ค์Œ์‚ฌ๋žŒ์—๊ฒŒ ์ „ํ™”๋ฅผ ๊ฑฐ๋Š” ์†๋„๋Š” ๋™์ผ).

๋น„์ƒ์—ฐ๋ฝ๋ง ์ •๋ณด๋Š” ์‚ฌ์ „์— ๊ณต์œ ๋˜๋ฉฐ ํ•œ ๋ฒˆ ์—ฐ๋ฝ์„ ๋ฐ›์€ ์‚ฌ๋žŒ์—๊ฒŒ ๋‹ค์‹œ ์—ฐ๋ฝ์„ ํ•˜๋Š” ์ผ์€ ์—†๋‹ค.

์˜ˆ์‹œ์—์„œ์˜ 3, 6, 11, 22๋ฒˆ๊ณผ ๊ฐ™์ด ์—ฐ๋ฝ์„ ๋ฐ›์„ ์ˆ˜ ์—†๋Š” ์‚ฌ๋žŒ๋„ ์กด์žฌํ•  ์ˆ˜ ์žˆ๋‹ค.
 
[์ž…๋ ฅ]

์ž…๋ ฅ์˜ ์ฒซ ๋ฒˆ์งธ ์ค„์—๋Š” ์ž…๋ ฅ ๋ฐ›๋Š” ๋ฐ์ดํ„ฐ์˜ ๊ธธ์ด์™€ ์‹œ์ž‘์ ์ด ์ฃผ์–ด์ง„๋‹ค.

๊ทธ ๋‹ค์Œ ์ค„์— ์ž…๋ ฅ๋ฐ›๋Š” ๋ฐ์ดํ„ฐ๋Š” {from, to, from, to, …} ์˜ ์ˆœ์„œ๋กœ ํ•ด์„๋˜๋ฉฐ ์˜ˆ์‹œ์˜ ๊ฒฝ์šฐ๋Š” {2, 7, 11, 6, 6, 2, 2, 15, 15, 4, 4, 2, 4, 10, 7, 1, 1, 7, 1, 8, 1, 17, 3, 22}์™€ ๊ฐ™๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ์ˆœ์„œ์—๋Š” ์ƒ๊ด€์ด ์—†์œผ๋ฏ€๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฃผ์–ด์ง„ ์ธํ’‹๋„ ๋™์ผํ•œ ๋น„์ƒ์—ฐ๋ฝ๋ง์„ ๋‚˜ํƒ€๋‚ธ๋‹ค (๊ฐ™์€ ๋น„์ƒ์—ฐ๋ฝ๋ง์„ ํ‘œํ˜„ํ•˜๋Š” ๋‹ค์–‘ํ•œ ์ธํ’‹์ด ์กด์žฌ ๊ฐ€๋Šฅํ•˜๋‹ค).

{1, 17, 3, 22, 1, 8, 1, 7, 7, 1, 2, 7, 2, 15, 15, 4, 6, 2, 11, 6, 4, 10, 4, 2}

๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋™์ผํ•œ {from, to}์Œ์ด ์—ฌ๋Ÿฌ ๋ฒˆ ๋ฐ˜๋ณต๋˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์œผ๋ฉฐ, ํ•œ ๋ฒˆ ๊ธฐ๋ก๋œ ๊ฒฝ์šฐ์™€ ์—ฌ๋Ÿฌ ๋ฒˆ ๊ธฐ๋ก๋œ ๊ฒฝ์šฐ์˜ ์ฐจ์ด๋Š” ์—†๋‹ค.

{1, 17, 1, 17, 1, 17, 3, 22, 1, 8, 1, 7, 7, 1, 2, 7, 2, 15, 15, 4, 6, 2, 11, 6, 4, 10, 11, 6, 4, 2}
 
[์ถœ๋ ฅ]

#๋ถ€ํ˜ธ์™€ ํ•จ๊ป˜ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ๋ฒˆํ˜ธ๋ฅผ ์ถœ๋ ฅํ•˜๊ณ , ๊ณต๋ฐฑ ๋ฌธ์ž ํ›„ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์— ๋Œ€ํ•œ ๋‹ต์„ ์ถœ๋ ฅํ•œ๋‹ค.

๋ฐ˜์‘ํ˜•