[Python, 2252번] 줄 세우기

2024. 10. 9. 16:05·코테/백준


☑️ [Python, 백준/2252번] 줄 세우기

1️⃣ 문제

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

2️⃣ 접근

위상정렬.. Topology Sort... 이 개념을 공부하고 있다가 이해가 가지 않았다. 위상정렬이 DAG에서 선형적으로 보일 수 있게끔 정렬하는 알고리즘인 것은 알겠는데.. 왜 이런 알고리즘이 있어야 하나? 싶은 생각이 있어서 문제를 풀면서 어떤 상황에서 사용할 수 있을지 생각해보기로 했다.

 

그렇기 때문에 줄 세우기 문제도 위상정렬을 통해서 접근할 수 있다는 점을 알고 있는 상태에서 접근했다. 위상 정렬은 단순하게 탐색이 되었을 때, Indegree를 1씩 제거하면서 Indegree가 0인 것 부터 탐색을 돌아주면 된다.

 

지금 코드에서 안좋은 포인트는 indegree가 0인지 식별하는 코드가 2번 사용되는 것이다. 중복되는 문제가 있어서 이걸 줄이고 싶은데.... 어떻게 해결할 수 있을지 생각해봐야겠다.🥺

3️⃣ 코드

import sys
from collections import deque

def topological_sort():
    queue = deque()
    
    for i in range(1, std_num + 1):
        if indegree[i] == 0:
            queue.append(i)
    while queue:
        num = queue.popleft()
        print(num, end=" ")
        for i in graph[num]:
            indegree[i] -= 1
            if indegree[i] == 0:
                queue.append(i)

if __name__ == "__main__":
    std_num, change_num = map(int, input().split())
    
    indegree = [0] * (std_num + 1)
    
    graph = [[] for _ in range(std_num + 1)]
    for _ in range(change_num):
        a, b = map(int, input().split())
        graph[a].append(b)
        indegree[b] += 1
    
    topological_sort()

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

[C++, 백준/11724번] 연결 요소의 개수  (0) 2025.03.07
[Python, 2156번] 포도주 시식  (1) 2024.10.22
[Python, 10844번] 쉬운 계단 수  (0) 2024.10.08
[Python, 백준/21606번] 아침 산책  (0) 2024.10.07
[Python, 백준/11725번] 트리의 부모 찾기  (1) 2024.09.24
'코테/백준' 카테고리의 다른 글
  • [C++, 백준/11724번] 연결 요소의 개수
  • [Python, 2156번] 포도주 시식
  • [Python, 10844번] 쉬운 계단 수
  • [Python, 백준/21606번] 아침 산책
태역
태역
  • 태역
    RYULAB
    태역
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 언어
        • C
        • C++
        • C#
      • 엔진, 프레임워크
        • Unity
        • Unreal
        • Electron
      • 공부
        • 디자인 패턴
        • 수학
        • CS
        • Git
        • 알고리즘
        • 자료구조
      • 코테
        • 프로그래머스
        • 백준
      • 독서
        • Effective C#
        • CLR via C#
        • 뇌를 자극하는 윈도우즈 시스템 프로그래밍
        • 오브젝트
        • CSAPP
        • OSTEP
      • 프로젝트
        • Unity
      • 개발 일지
        • 퓨처리티
        • 골든타임
      • 활동
        • 게임잼 후기
        • 게임제작동아리 브릿지
        • 크래프톤 정글
        • 기타
      • 기타
  • 블로그 메뉴

    • 링크

    • 공지사항

      • 2024 04 17
    • 인기 글

    • 태그

      티스토리챌린지
      인프런 #인프런강의후기 #게임개발 #게임개발강의 #인강후기 #강의후기 #게임개발자 #인프런강의
      오블완
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    태역
    [Python, 2252번] 줄 세우기
    상단으로

    티스토리툴바