백준 2458. 키 순서

2024. 11. 2. 16:14·백준

https://www.acmicpc.net/problem/2458

1. 플로이드-워셜 알고리즘 풀이

import sys

N, M = map(int, input().split())
height = [[0 for _ in range(N+1)] for _ in range(N+1)]

for _ in range(M):
    tall, short = map(int, sys.stdin.readline().split())
    height[tall][short] = 1

for k in range(1, N+1):
    for i in range(1, N+1):
        for j in range(1, N+1):
            if height[i][j] == 1 or (height[i][k] == 1 and height[k][j] == 1): # 경로 k를 거치거나 안거쳐도 i->j로 갈 수 있으면
                height[i][j] = 1

ans = 0
for i in range(1, N+1):
    known_height = 0
    for j in range(1, N+1):
        known_height += height[i][j] + height[j][i] # 자신보다 작은사람과 큰사람의 합(0 + 1 or 1 + 0 or 0 + 0 -> 알 수 없음)
    if known_height == N-1: # 자신보다 작은사람과 큰사람의 합이 N-1이 되어야 모든 사람과 연결되는 것이므로 정답 조건 만족!
        ans += 1
print(ans)

2. dfs 풀이 -> 시간복잡도 훨씬 낮음!

import sys
input = sys.stdin.readline

def dfs(now, idx):
    for node in arr[idx]: 
        if visited[now][node] == 0 : 
            visited[now][node]= 1 # 연결되어있음을 확인하는 1
            visited[node][now]= 1 
            dfs(now,node) 

n, m = map(int,input().split())
arr = [[] for _ in range(n+1)]
for _ in range(m):
    a, b = map(int,input().split())
    arr[a].append(b)

visited = [[0]*(n+1) for _ in range(n+1)]

for i in range(1,n+1):
    visited[i][i] = 1
    dfs(i,i)

cnt = 0

for i in range(1,n+1):
    if sum(visited[i]) == n : # 나보다 크거나 작은 사람 + 나 = n이면 정답 조건 만족!
        cnt += 1

print(cnt)
저작자표시 (새창열림)

'백준' 카테고리의 다른 글

백준 1240. 노드사이의 거리  (0) 2024.11.03
백준 1717. 집합의 표현  (0) 2024.11.03
백준 2660. 회장뽑기  (0) 2024.10.30
백준 1753. 최단경로  (0) 2024.10.29
백준 1389. 케빈 베이컨의 6단계 법칙  (0) 2024.10.29
'백준' 카테고리의 다른 글
  • 백준 1240. 노드사이의 거리
  • 백준 1717. 집합의 표현
  • 백준 2660. 회장뽑기
  • 백준 1753. 최단경로
버그잡는고양이발
버그잡는고양이발
주니어 개발자입니다!
  • 버그잡는고양이발
    지극히평범한개발블로그
    버그잡는고양이발
  • 전체
    오늘
    어제
    • 분류 전체보기 (383) N
      • React (16)
      • Next.js (5)
      • Javascript (5)
      • Typescript (4)
      • Node.js (2)
      • Cs (16)
      • 트러블 슈팅&리팩토링 (6) N
      • Html (1)
      • Css (3)
      • Django (0)
      • vue (0)
      • Java (2)
      • Python (0)
      • 독서 (1)
      • 기타 (3)
      • 백준 (192)
      • swea (31)
      • 프로그래머스 (30)
      • 이코테 (4)
      • 99클럽 코테 스터디 (30)
      • ssafy (31)
      • IT기사 (1)
  • 블로그 메뉴

    • 홈
    • 태그
  • 인기 글

  • 태그

    코딩테스트준비
    Til
    항해99
    99클럽
    개발자취업
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
버그잡는고양이발
백준 2458. 키 순서
상단으로

티스토리툴바