Algorithm Problem/Python

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

deo2kim 2020. 8. 15. 08:29
๋ฐ˜์‘ํ˜•

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

1. D4 | DFS ์Šคํƒ

2. ์ธ์ ‘๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“ ๋‹ค.

3. DFS ํƒ์ƒ‰์„ ํ•œ๋‹ค.

4. ๋์ ์„ ๋งŒ๋‚˜๋ฉด answer = 1 ์•„๋‹ˆ๋ฉด ๊ทธ๋Œ€๋กœ answer = 0 ์„ ์ถœ๋ ฅํ•œ๋‹ค.

 

๐Ÿ’จ DFS ๊ธฐ๋ณธ ๋ฌธ์ œ

 

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

 for _ in range(1, 11):
    tc, n = map(int, input().split())

    # ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“ ๋‹ค.
    # {1:[2,3], 2:[4,8]}
    # 1์—์„œ 2์™€ 3์œผ๋กœ ๊ฐˆ ์ˆ˜ ์žˆ๊ณ , 2์—์„œ 4์™€ 8๋กœ ๊ฐˆ ์ˆ˜ ์žˆ๋‹ค๋Š” ์˜๋ฏธ
    adj_list = list(map(int, input().split()))
    adj = {x:[] for x in range(100)}
    for i in range(0, n*2, 2):
        s = adj_list[i]
        e = adj_list[i+1]
        adj[s].append(e)

    stack = [0]
    # ์ค‘๋ณตํƒ์ƒ‰์„ ๋ง‰๊ธฐ ์œ„ํ•ด visit์„ ํ™œ์šฉ
    visit = [0]*(100)
    visit[0] = 1

    answer = 0
    while stack:
        c = stack.pop()
        for neighbor in adj[c]:
            # ๋์ ์„ ๋งŒ๋‚˜๋ฉด ๊ธธ์ด ์žˆ๋‹ค๋Š” ์˜๋ฏธ์ด๋ฏ€๋กœ 1์„ ๋‹ด์•„์ฃผ๊ณ  while๋ฌธ์„ ๋๋‚ด์ค€๋‹ค.
            if neighbor == 99:
                answer = 1
                break
            if visit[neighbor] == 0:
                stack.append(neighbor)
                visit[neighbor] = 1

    print('#{} {}'.format(tc, answer))
    

 

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

์ถœ์ฒ˜: SW Expert Academy

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

 

SW Expert Academy

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

swexpertacademy.com

๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ๋„์‹ํ™”ํ•œ ์ง€๋„์—์„œ A๋„์‹œ์—์„œ ์ถœ๋ฐœํ•˜์—ฌ B๋„์‹œ๋กœ ๊ฐ€๋Š” ๊ธธ์ด ์กด์žฌํ•˜๋Š”์ง€ ์กฐ์‚ฌํ•˜๋ ค๊ณ  ํ•œ๋‹ค.

๊ธธ ์ค‘๊ฐ„ ์ค‘๊ฐ„์—๋Š” ์ตœ๋Œ€ 2๊ฐœ์˜ ๊ฐˆ๋ฆผ๊ธธ์ด ์กด์žฌํ•˜๊ณ , ๋ชจ๋“  ๊ธธ์€ ์ผ๋ฐฉ ํ†ตํ–‰์œผ๋กœ ๋˜๋Œ์•„์˜ค๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ธธ์ด ์ฃผ์–ด์งˆ ๋•Œ, A๋„์‹œ์—์„œ B๋„์‹œ๋กœ ๊ฐ€๋Š” ๊ธธ์ด ์กด์žฌํ•˜๋Š”์ง€ ์•Œ์•„๋‚ด๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์—ฌ๋ผ.

 - A์™€ B๋Š” ์ˆซ์ž 0๊ณผ 99์œผ๋กœ ๊ณ ์ •๋œ๋‹ค.

 - ๋ชจ๋“  ๊ธธ์€ ์ˆœ์„œ์Œ์œผ๋กœ ๋‚˜ํƒ€๋‚ด์–ด์ง„๋‹ค. ์œ„ ์˜ˆ์‹œ์—์„œ 2๋ฒˆ์—์„œ ์ถœ๋ฐœ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธธ์˜ ํ‘œํ˜„์€ (2, 5), (2, 9)๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

 - ๊ฐ€๋Š” ๊ธธ์˜ ๊ฐœ์ˆ˜์™€ ์ƒ๊ด€์—†์ด ํ•œ๊ฐ€์ง€ ๊ธธ์ด๋ผ๋„ ์กด์žฌํ•œ๋‹ค๋ฉด ๊ธธ์ด ์กด์žฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 - ๋‹จ ํ™”์‚ดํ‘œ ๋ฐฉํ–ฅ์„ ๊ฑฐ์Šฌ๋Ÿฌ ๋Œ์•„๊ฐˆ ์ˆ˜๋Š” ์—†๋‹ค.


[์ œ์•ฝ ์‚ฌํ•ญ]

์ถœ๋ฐœ์ ์€ 0, ๋„์ฐฉ์ ์€ 99์œผ๋กœ ํ‘œํ˜„๋œ๋‹ค.

์ •์ (๋ถ„๊ธฐ์ )์˜ ๊ฐœ์ˆ˜๋Š” 98๊ฐœ(์ถœ๋ฐœ์ ๊ณผ ๋„์ฐฉ์  ์ œ์™ธ)๋ฅผ ๋„˜์–ด๊ฐ€์ง€ ์•Š์œผ๋ฉฐ, ํ•œ ๊ฐœ์˜ ์ •์ ์—์„œ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” ๊ธธ์˜ ๊ฐœ์ˆ˜๋„ 2๊ฐœ๋ฅผ ๋„˜์–ด๊ฐ€์ง€ ์•Š๋Š”๋‹ค.

์•„๋ž˜ ์ œ์‹œ๋œ ๊ฐ€์ด๋“œ ๋ผ์ธ์€ ์ œ์•ˆ์‚ฌํ•ญ์ผ ๋ฟ ๊ฐ•์ œ์‚ฌํ•ญ์€ ์•„๋‹ˆ๋‹ค.

[๋ฐ์ดํ„ฐ ์ €์žฅ ๊ฐ€์ด๋“œ]

์ •์ (๋ถ„๊ธฐ์ )์˜ ๊ฐœ์ˆ˜๊ฐ€ ์ตœ๋Œ€ 100๊ฐœ ์ด๊ธฐ ๋•Œ๋ฌธ์—, size [100]์˜ ์ •์  ๋ฐฐ์—ด 2๊ฐœ์„ ์„ ์–ธํ•˜์—ฌ, ๊ฐ ์ •์ ์˜ ๋ฒˆํ˜ธ๋ฅผ ์ฃผ์†Œ๋กœ ์‚ฌ์šฉํ•˜๊ณ , ์ €์žฅ๋˜๋Š” ๋ฐ์ดํ„ฐ๋Š” ๊ฐ ์ •์ ์—์„œ ๋„์ฐฉํ•˜๋Š” ์ •์ ์˜ ๋ฒˆํ˜ธ๋ฅผ ์ €์žฅํ•œ๋‹ค.

์œ„ ๊ทธ๋ฆผ์„ ์ €์žฅํ•˜์˜€์„ ๋•Œ ๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 


[์ž…๋ ฅ]

๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ์ฒซ ์ค„์—๋Š” ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ๋ฒˆํ˜ธ์™€ ๊ธธ์˜ ์ด ๊ฐœ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง€๊ณ  ๊ทธ ๋‹ค์Œ ์ค„์—๋Š” ์ˆœ์„œ์Œ์ด ์ฃผ์–ด์ง„๋‹ค.

์ˆœ์„œ์Œ์˜ ๊ฒฝ์šฐ, ๋ณ„๋„๋กœ ๋‚˜๋ˆ„์–ด ํ‘œํ˜„๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ˆซ์ž์˜ ๋‚˜์—ด์ด๋ฉฐ, ๋‚˜์—ด๋œ ์ˆœ์„œ๋Œ€๋กœ ์ˆœ์„œ์Œ์„ ์ด๋ฃฌ๋‹ค.

[์ถœ๋ ฅ]

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

๋ฐ˜์‘ํ˜•