deo2kim
๋งž์™œํ‹€
deo2kim
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ
    • CS
      • Algorithm
      • Data Structure
      • Network
      • DB
      • OS
    • Algorithm Problem
      • Python
      • JavaScript
    • Programming language
      • Python
      • JavaScript
    • Tool
      • Jquery
      • React
    • ๊ฐœ๋ฐœ
    • Infra

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

๋ฐ˜์‘ํ˜•
hELLO ยท Designed By ์ •์ƒ์šฐ.
deo2kim

๋งž์™œํ‹€

[python] ๋ฐฑ์ค€ - 2617. ๊ตฌ์Šฌ ์ฐพ๊ธฐ
Algorithm Problem/Python

[python] ๋ฐฑ์ค€ - 2617. ๊ตฌ์Šฌ ์ฐพ๊ธฐ

2020. 9. 19. 08:19
๋ฐ˜์‘ํ˜•

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

  • S1 | ๊ทธ๋ž˜ํ”„, BFS

์›๋ž˜ ๊ทธ๋ƒฅ ๋ง‰ ํ’€์–ด์„œ ํ•ด๊ฒฐํ–ˆ๋Š”๋ฐ ๋ฌธ์ œ์—์„œ BFS๋ผ๊ณ  ํ•˜๊ธธ๋ž˜, ๋‹ค์‹œ ํ’€์–ด๋ดค๋‹ค.

๊ทธ๋ž˜ํ”„ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ค„ ์•Œ๋ฉด ๋ฌธ์ œ๋Š” ๊ฐ„๋‹จํ–ˆ๋‹ค.

 

๋‘๊ฐœ์˜ ์ธ์ ‘๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“ ๋‹ค. ( ๋‚˜๋ณด๋‹ค ๋ฌด๊ฑฐ์šด ์• ๋“ค, ๋‚˜๋ณด๋‹ค ๊ฐ€๋ฒผ์šด ์• ๋“ค )

  • ๋‘๊ฐœ์˜ ์ธ์ ‘๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“ ๋‹ค. ( ๋‚˜๋ณด๋‹ค ๋ฌด๊ฑฐ์šด ์• ๋“ค, ๋‚˜๋ณด๋‹ค ๊ฐ€๋ฒผ์šด ์• ๋“ค )
  • ๋ชจ๋“  ๋ฒˆํ˜ธ๋ฅผ ์ฐจ๋ก€๋กœ BFS ํƒ์ƒ‰ํ•œ๋‹ค.
  • ๊ทธ ๋•Œ ๊ฐ ๋ฒˆํ˜ธ๋งˆ๋‹ค ์ด์›ƒ๋“ค์˜ ๊ฐœ์ˆ˜๋ฅผ ์นด์šดํŠธํ•ด์ค€๋‹ค.
  • ๊ฐœ์ˆ˜๊ฐ€ ๋…ธ๋“œ๊ฐœ์ˆ˜์˜ ์ ˆ๋ฐ˜ ์ด์ƒ์ด๋ฉด ๊ฐ€์šด๋ฐ ํ›„๋ณด๊ฐ€ ๋  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ๋‹ต์— +1์„ ํ•ด์ค€๋‹ค.

๐Ÿ’จ ๋‘๋ฒˆ์งธ์— ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ดˆ๊ณผ๋Š” visited ๋ฐฐ์—ด์„ ๋”ฐ๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„์„œ ์ค‘๋ณต์ด ๋งŽ์ด ๋ฐœ์ƒํ–ˆ๋‹ค.

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

from collections import deque


def solution(N, M, compare):
    answer = 0
    heavy_adj = {x + 1: [] for x in range(N)}
    light_adj = {x + 1: [] for x in range(N)}

    for h, l in compare:
        heavy_adj[l].append(h)
        light_adj[h].append(l)

    for i in range(1, N + 1):
        visited = [0]*(N+1)
        q = deque([i])
        cnt = 0
        while q:
            c = q.popleft()
            for nei in heavy_adj[c]:
                if visited[nei] == 0:
                    visited[nei] = True
                    q.append(nei)
                    cnt += 1

        if cnt > N // 2:
            answer += 1
        visited = [0] * (N + 1)
        q.append(i)
        cnt = 0
        while q:
            c = q.popleft()
            for nei in light_adj[c]:
                if visited[nei] == 0:
                    visited[nei] = True
                    q.append(nei)
                    cnt += 1

        if cnt > N // 2:
            answer += 1

    print(answer)


if __name__ == "__main__":
    N0, M0 = map(int, input().split())
    compare0 = [list(map(int, input().split())) for _ in range(M0)]
    solution(N0, M0, compare0)

 

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

์ถœ์ฒ˜: BACKJOON ONLINE JUDGE

๋งํฌ: https://www.acmicpc.net/problem/2617

 

2617๋ฒˆ: ๊ตฌ์Šฌ ์ฐพ๊ธฐ

๋ชจ์–‘์€ ๊ฐ™์œผ๋‚˜, ๋ฌด๊ฒŒ๊ฐ€ ๋ชจ๋‘ ๋‹ค๋ฅธ N๊ฐœ์˜ ๊ตฌ์Šฌ์ด ์žˆ๋‹ค. N์€ ํ™€์ˆ˜์ด๋ฉฐ, ๊ตฌ์Šฌ์—๋Š” ๋ฒˆํ˜ธ๊ฐ€ 1,2,...,N์œผ๋กœ ๋ถ™์–ด ์žˆ๋‹ค. ์ด ๊ตฌ์Šฌ ์ค‘์—์„œ ๋ฌด๊ฒŒ๊ฐ€ ์ „์ฒด์˜ ์ค‘๊ฐ„์ธ (๋ฌด๊ฒŒ ์ˆœ์„œ๋กœ (N+1)/2๋ฒˆ์งธ) ๊ตฌ์Šฌ์„ ์ฐพ๊ธฐ ์œ„ํ•ด์„œ ๏ฟฝ

www.acmicpc.net


๋ฌธ์ œ

๋ชจ์–‘์€ ๊ฐ™์œผ๋‚˜, ๋ฌด๊ฒŒ๊ฐ€ ๋ชจ๋‘ ๋‹ค๋ฅธ N๊ฐœ์˜ ๊ตฌ์Šฌ์ด ์žˆ๋‹ค. N์€ ํ™€์ˆ˜์ด๋ฉฐ, ๊ตฌ์Šฌ์—๋Š” ๋ฒˆํ˜ธ๊ฐ€ 1,2,...,N์œผ๋กœ ๋ถ™์–ด ์žˆ๋‹ค. ์ด ๊ตฌ์Šฌ ์ค‘์—์„œ ๋ฌด๊ฒŒ๊ฐ€ ์ „์ฒด์˜ ์ค‘๊ฐ„์ธ (๋ฌด๊ฒŒ ์ˆœ์„œ๋กœ (N+1)/2๋ฒˆ์งธ) ๊ตฌ์Šฌ์„ ์ฐพ๊ธฐ ์œ„ํ•ด์„œ ์•„๋ž˜์™€ ๊ฐ™์€ ์ผ์„ ํ•˜๋ ค ํ•œ๋‹ค.

์šฐ๋ฆฌ์—๊ฒŒ ์ฃผ์–ด์ง„ ๊ฒƒ์€ ์–‘ํŒ” ์ €์šธ์ด๋‹ค. ํ•œ ์Œ์˜ ๊ตฌ์Šฌ์„ ๊ณจ๋ผ์„œ ์–‘ํŒ” ์ €์šธ์˜ ์–‘์ชฝ์— ํ•˜๋‚˜์”ฉ ์˜ฌ๋ ค ๋ณด๋ฉด ์–ด๋А ์ชฝ์ด ๋ฌด๊ฑฐ์šด๊ฐ€๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ์ด๋ ‡๊ฒŒ M๊ฐœ์˜ ์Œ์„ ๊ณจ๋ผ์„œ ๊ฐ๊ฐ ์–‘ํŒ” ์ €์šธ์— ์˜ฌ๋ ค์„œ ์–ด๋А ๊ฒƒ์ด ๋ฌด๊ฑฐ์šด๊ฐ€๋ฅผ ๋ชจ๋‘ ์•Œ์•„๋ƒˆ๋‹ค. ์ด ๊ฒฐ๊ณผ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฌด๊ฒŒ๊ฐ€ ์ค‘๊ฐ„์ด ๋  ๊ฐ€๋Šฅ์„ฑ์ด ์ „ํ˜€ ์—†๋Š” ๊ตฌ์Šฌ๋“ค์€ ๋จผ์ € ์ œ์™ธํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, N=5์ด๊ณ , M=4 ์Œ์˜ ๊ตฌ์Šฌ์— ๋Œ€ํ•ด์„œ ์–ด๋А ์ชฝ์ด ๋ฌด๊ฑฐ์šด๊ฐ€๋ฅผ ์•Œ์•„๋‚ธ ๊ฒฐ๊ณผ๊ฐ€ ์•„๋ž˜์— ์žˆ๋‹ค.

  1. ๊ตฌ์Šฌ 2๋ฒˆ์ด ๊ตฌ์Šฌ 1๋ฒˆ๋ณด๋‹ค ๋ฌด๊ฒ๋‹ค.
  2. ๊ตฌ์Šฌ 4๋ฒˆ์ด ๊ตฌ์Šฌ 3๋ฒˆ๋ณด๋‹ค ๋ฌด๊ฒ๋‹ค.
  3. ๊ตฌ์Šฌ 5๋ฒˆ์ด ๊ตฌ์Šฌ 1๋ฒˆ๋ณด๋‹ค ๋ฌด๊ฒ๋‹ค.
  4. ๊ตฌ์Šฌ 4๋ฒˆ์ด ๊ตฌ์Šฌ 2๋ฒˆ๋ณด๋‹ค ๋ฌด๊ฒ๋‹ค.

์œ„์™€ ๊ฐ™์ด ๋„ค ๊ฐœ์˜ ๊ฒฐ๊ณผ๋งŒ์„ ์•Œ๊ณ  ์žˆ์œผ๋ฉด, ๋ฌด๊ฒŒ๊ฐ€ ์ค‘๊ฐ„์ธ ๊ตฌ์Šฌ์„ ์ •ํ™•ํ•˜๊ฒŒ ์ฐพ์„ ์ˆ˜๋Š” ์—†์ง€๋งŒ, 1๋ฒˆ ๊ตฌ์Šฌ๊ณผ 4๋ฒˆ ๊ตฌ์Šฌ์€ ๋ฌด๊ฒŒ๊ฐ€ ์ค‘๊ฐ„์ธ ๊ตฌ์Šฌ์ด ์ ˆ๋Œ€ ๋  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์€ ํ™•์‹คํžˆ ์•Œ ์ˆ˜ ์žˆ๋‹ค. 1๋ฒˆ ๊ตฌ์Šฌ๋ณด๋‹ค ๋ฌด๊ฑฐ์šด ๊ฒƒ์ด 2, 4, 5๋ฒˆ ๊ตฌ์Šฌ์ด๊ณ , 4๋ฒˆ ๋ณด๋‹ค ๊ฐ€๋ฒผ์šด ๊ฒƒ์ด 1, 2, 3๋ฒˆ์ด๋‹ค. ๋”ฐ๋ผ์„œ ๋‹ต์€ 2๊ฐœ์ด๋‹ค.

M ๊ฐœ์˜ ์Œ์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ณ  ๋ฌด๊ฒŒ๊ฐ€ ์ค‘๊ฐ„์ธ ๊ตฌ์Šฌ์ด ๋  ์ˆ˜ ์—†๋Š” ๊ตฌ์Šฌ์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์ž…๋ ฅ

์ฒซ ์ค„์€ ๊ตฌ์Šฌ์˜ ๊ฐœ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜ N(1 ≤ N ≤ 99)๊ณผ ์ €์šธ์— ์˜ฌ๋ ค ๋ณธ ์Œ์˜ ๊ฐœ์ˆ˜ M(1 ≤ M ≤ N(N-1)/2)์ด ์ฃผ์–ด์ง„๋‹ค. ๊ทธ ๋‹ค์Œ M ๊ฐœ์˜ ์ค„์€ ๊ฐ ์ค„๋งˆ๋‹ค ๋‘ ๊ฐœ์˜ ๊ตฌ์Šฌ ๋ฒˆํ˜ธ๊ฐ€ ์ฃผ์–ด์ง€๋Š”๋ฐ, ์•ž ๋ฒˆํ˜ธ์˜ ๊ตฌ์Šฌ์ด ๋’ค ๋ฒˆํ˜ธ์˜ ๊ตฌ์Šฌ๋ณด๋‹ค ๋ฌด๊ฒ๋‹ค๋Š” ๊ฒƒ์„ ๋œปํ•œ๋‹ค.

์ถœ๋ ฅ

์ฒซ ์ค„์— ๋ฌด๊ฒŒ๊ฐ€ ์ค‘๊ฐ„์ด ์ ˆ๋Œ€๋กœ ๋  ์ˆ˜ ์—†๋Š” ๊ตฌ์Šฌ์˜ ์ˆ˜๋ฅผ ์ถœ๋ ฅ ํ•œ๋‹ค.

๋ฐ˜์‘ํ˜•
์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'Algorithm Problem > Python' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[python] ๋ฐฑ์ค€ - 4883. ์‚ผ๊ฐ ๊ทธ๋ž˜ํ”„  (0) 2020.09.20
[python] ๋ฐฑ์ค€ - 13335. ํŠธ๋Ÿญ  (0) 2020.09.20
[python] SWEA - 6019. ๊ธฐ์ฐจ ์‚ฌ์ด์˜ ํŒŒ๋ฆฌ  (2) 2020.09.18
[python] ๋ฐฑ์ค€ - 16953. A โ†’ B  (0) 2020.09.18
[python] SWEA - 1248. ๊ณตํ†ต์กฐ์ƒ  (0) 2020.09.17
    'Algorithm Problem/Python' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [python] ๋ฐฑ์ค€ - 4883. ์‚ผ๊ฐ ๊ทธ๋ž˜ํ”„
    • [python] ๋ฐฑ์ค€ - 13335. ํŠธ๋Ÿญ
    • [python] SWEA - 6019. ๊ธฐ์ฐจ ์‚ฌ์ด์˜ ํŒŒ๋ฆฌ
    • [python] ๋ฐฑ์ค€ - 16953. A → B
    deo2kim
    deo2kim
    ์ฝ”๋”ฉ ๊ธฐ๋กํ•˜๊ธฐ

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”