ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [๋ฐฑ์ค€] 10159 ์ €์šธ with Python
    PS 2022. 7. 17. 01:25
    728x90
    ๋ฐ˜์‘ํ˜•

    ๐Ÿ“Œ BOJ 10159 ์ €์šธ

    ๐Ÿ’ก ์กฐ๊ฑด

    1. ๋ฌด๊ฒŒ๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅธ N ๊ฐœ์˜ ๋ฌผ๊ฑด์ด ์žˆ๋‹ค. ๊ฐ ๋ฌผ๊ฑด์€ 1๋ถ€ํ„ฐ N ๊นŒ์ง€ ๋ฒˆํ˜ธ๊ฐ€ ๋งค๊ฒจ์ ธ ์žˆ๋‹ค.
      ์šฐ๋ฆฌ๋Š” ์ผ๋ถ€ ๋ฌผ๊ฑด ์Œ์— ๋Œ€ํ•ด์„œ ์–‘ํŒ” ์ €์šธ๋กœ ์–ด๋–ค ๊ฒƒ์ด ๋ฌด๊ฑฐ์šด ๊ฒƒ์ธ์ง€๋ฅผ ์ธก์ •ํ•œ ๊ฒฐ๊ณผํ‘œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
      ์ด ๊ฒฐ๊ณผํ‘œ๋กœ๋ถ€ํ„ฐ ์ง์ ‘ ์ธก์ •ํ•˜์ง€ ์•Š์€ ๋ฌผ๊ฑด ์Œ์˜ ๋น„๊ต ๊ฒฐ๊ณผ๋ฅผ ์•Œ์•„๋‚ผ ์ˆ˜๋„ ์žˆ๊ณ  ์•Œ์•„๋‚ด์ง€ ๋ชปํ•  ์ˆ˜๋„ ์žˆ๋‹ค.
      ์˜ˆ๋ฅผ ๋“ค์–ด, ์ด 6๊ฐœ์˜ ๋ฌผ๊ฑด์ด ์žˆ๊ณ , ๋‹ค์Œ 5๊ฐœ์˜ ๋น„๊ต ๊ฒฐ๊ณผ๊ฐ€ ์ฃผ์–ด์กŒ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž. ([1]์€ 1๋ฒˆ ๋ฌผ๊ฑด์˜ ๋ฌด๊ฒŒ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.)
    2. [1]>[2], [2]>[3], [3]>[4], [5]>[4], [6]>[5]
    1. ์šฐ๋ฆฌ๋Š” [2]>[3], [3]>[4]๋กœ๋ถ€ํ„ฐ [2]>[4]๋ผ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.
      ํ•˜์ง€๋งŒ, ๋ฌผ๊ฑด 2์™€ ๋ฌผ๊ฑด 6์„ ๋น„๊ตํ•˜๋Š” ๊ฒฝ์šฐ, ์•ž์„œ์˜ ๊ฒฐ๊ณผ๋งŒ์œผ๋กœ๋Š” ์–ด๋Š ๊ฒƒ์ด ๋ฌด๊ฑฐ์šด์ง€ ์•Œ ์ˆ˜ ์—†๋‹ค.
      ์ด์™€ ๊ฐ™์ด, ๋ฌผ๊ฑด 2๋Š” ๋ฌผ๊ฑด 1, 3, 4์™€์˜ ๋น„๊ต ๊ฒฐ๊ณผ๋Š” ์•Œ ์ˆ˜ ์žˆ์ง€๋งŒ, ๋ฌผ๊ฑด 5, 6๊ณผ์˜ ๋น„๊ต ๊ฒฐ๊ณผ๋Š” ์•Œ ์ˆ˜ ์—†๋‹ค.
      ๋ฌผ๊ฑด 4๋Š” ๋ชจ๋“  ๋‹ค๋ฅธ ๋ฌผ๊ฑด๊ณผ์˜ ๋น„๊ต ๊ฒฐ๊ณผ๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋‹ค.
    1. ๋น„๊ต ๊ฒฐ๊ณผ๊ฐ€ ๋ชจ์ˆœ๋˜๋Š” ์ž…๋ ฅ์€ ์—†๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค. ์œ„ ์˜ˆ์ œ์˜ ๊ธฐ์กด ์ธก์ • ๊ฒฐ๊ณผ์— [3]>[1]์ด ์ถ”๊ฐ€๋˜์—ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž.
      ์ด ๊ฒฝ์šฐ [1]>[2], [2]>[3]์ด๋ฏ€๋กœ ์šฐ๋ฆฌ๋Š” [1]>[3]์ด๋ผ๋Š” ๊ฒƒ์„ ์˜ˆ์ธกํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ,
      ์ด๋Š” ๊ธฐ์กด์— ์ธก์ •๋œ ๊ฒฐ๊ณผ [3]>[1]๊ณผ ์„œ๋กœ ๋ชจ์ˆœ์ด๋ฏ€๋กœ ์ด๋Ÿฌํ•œ ์ž…๋ ฅ์€ ๊ฐ€๋Šฅํ•˜์ง€ ์•Š๋‹ค.
    1. ์ฒซ ์ค„์—๋Š” ๋ฌผ๊ฑด์˜ ๊ฐœ์ˆ˜ N ์ด ์ฃผ์–ด์ง€๊ณ , ๋‘˜์งธ ์ค„์—๋Š” ๋ฏธ๋ฆฌ ์ธก์ •๋œ ๋ฌผ๊ฑด ์Œ์˜ ๊ฐœ์ˆ˜ M์ด ์ฃผ์–ด์ง„๋‹ค.
      ๋‹จ, 5 ≤ N ≤ 100 ์ด๊ณ , 0 ≤ M ≤ 2,000์ด๋‹ค. ๋‹ค์Œ M๊ฐœ์˜ ์ค„์— ๋ฏธ๋ฆฌ ์ธก์ •๋œ ๋น„๊ต ๊ฒฐ๊ณผ๊ฐ€ ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ ์ฃผ์–ด์ง„๋‹ค.
      ๊ฐ ์ค„์—๋Š” ์ธก์ •๋œ ๋ฌผ๊ฑด ๋ฒˆํ˜ธ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋‘ ๊ฐœ์˜ ์ •์ˆ˜๊ฐ€ ๊ณต๋ฐฑ์„ ์‚ฌ์ด์— ๋‘๊ณ  ์ฃผ์–ด์ง€๋ฉฐ, ์•ž์˜ ๋ฌผ๊ฑด์ด ๋’ค์˜ ๋ฌผ๊ฑด๋ณด๋‹ค ๋” ๋ฌด๊ฒ๋‹ค.
    1. ๋ฌผ๊ฑด์˜ ๊ฐœ์ˆ˜ N ๊ณผ ์ผ๋ถ€ ๋ฌผ๊ฑด ์Œ์˜ ๋น„๊ต ๊ฒฐ๊ณผ๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ,
      ๊ฐ ๋ฌผ๊ฑด์— ๋Œ€ํ•ด์„œ ๊ทธ ๋ฌผ๊ฑด๊ณผ์˜ ๋น„๊ต ๊ฒฐ๊ณผ๋ฅผ ์•Œ ์ˆ˜ ์—†๋Š” ๋ฌผ๊ฑด์˜ ๊ฐœ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๋ฌธ์ œ
    1. ํ”Œ๋กœ์ด๋“œ ์™€์ƒฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์œ ํ˜•์˜ ๋ฌธ์ œ

    ๐Ÿ–ฅ ์†Œ์Šค ์ฝ”๋“œ

    from sys import stdin
    
    n = int(stdin.readline())
    m = int(stdin.readline())
    
    arr = [[False] * (n + 1) for _ in range(n + 1)]
    
    for _ in range(m):
        a, b = map(int, stdin.readline().split())
        arr[a][b] = True
    
    
    for k in range(1, n + 1):
        for i in range(1, n + 1):
            for j in range(1, n + 1):
                if arr[i][k] and arr[k][j]:
                    arr[i][j] = True
    
    for i in range(1, n + 1):
        cnt = 0
        for j in range(1, n + 1):
            if not arr[i][j] and not arr[j][i]:
                cnt += 1
        print(cnt - 1)

    ๐Ÿ”– ์˜ˆ์ œ ๋ฐ ์‹คํ–‰๊ฒฐ๊ณผ

    ์˜ˆ์ œ

    9
    11
    2 1
    3 1
    2 8
    2 9
    7 8
    4 5
    6 7
    6 3
    1 7
    6 2
    1 9

    ์‹คํ–‰๊ฒฐ๊ณผ

    2
    3
    3
    7
    7
    2
    3
    3
    4

    โŒจ๏ธ ๋ฌธ์ œ ํ’€์ด

    1. ํ”Œ๋กœ์ด๋“œ ์™€์ƒฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ํ‘ธ๋Š” ๋ฌธ์ œ์ด๋‹ค. ๋ฌธ์ œ๋ฅผ ์ฐธ๊ณ ํ•ด๋ณด๋ฉด, N์˜ ๋ฒ”์œ„๊ฐ€ ์ตœ๋Œ€ 100, M์€ ์ตœ๋Œ€ 2000 ์ด๋‹ค.
    2. (1) ๋ฒˆ์„ ๋‹ค๋ฅธ ๋ง๋กœ ํ•ด๋ณด์ž๋ฉด, ๋…ธ๋“œ๊ฐ€ ์ตœ๋Œ€ 100๊ฐœ, ๊ฐ„์„ ์˜ ๊ฐœ์ˆ˜๊ฐ€ ์ตœ๋Œ€ 2000๊ฐœ ์ž…๋ ฅ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.
    3. ํ”Œ๋กœ์ด๋“œ ์™€์ƒฌ์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(N^3) ์ด๋ฉฐ, ์ด ๋ฌธ์ œ์—์„œ๋Š” ์ตœ๋Œ€ 100 * 100 * 100 ๋งŒํผ์˜ ์—ฐ์‚ฐ์ด ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.
    4. ๋ฌผ๊ฑด ์Œ์˜ ๋น„๊ต๊ฒฐ๊ณผ๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ๊ทธ๋ž˜ํ”„์— ์ž…๋ ฅํ•˜๊ณ , ์ด๋ฅผ ํ”Œ๋กœ์ด๋“œ ์™€์ƒฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ†ตํ•ด ์„œ๋กœ ๋น„๊ต๊ฒฐ๊ณผ๋ฅผ ์•Œ ์ˆ˜ ์—†๋Š” ๊ฒƒ๋“ค์„ ์ถœ๋ ฅํ•˜๋ฉด ๋œ๋‹ค.
    ๋ฐ˜์‘ํ˜•

    ๋Œ“๊ธ€

Designed by Tistory.