[JAVA]백준 - 2252번 줄 세우기(골드3)

2025. 2. 25. 16:39· [LG 유플러스] 유레카/코딩테스트
import java.util.*;

public class Main {
	
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		int M = sc.nextInt();
		
		int[] students = new int[N+1];
		
		List<List<Integer>> graph = new ArrayList<>(N+1);
		for(int i = 0; i <= N; i++) {
			graph.add(new ArrayList<>());
		}
		
		
		for(int i = 0; i < M; i++) {
			int a = sc.nextInt();
			int b = sc.nextInt();
			graph.get(a).add(b);
			students[b]++;
		}
		
		PriorityQueue<Integer> pq = new PriorityQueue<>();
		
		for(int i = 1; i <= N; i++) {
			if(students[i]==0) {
				pq.offer(i);
			}
		}
		List<Integer> result = new ArrayList<>();
		
		while(!pq.isEmpty()) {
			int cur = pq.poll();
			result.add(cur);
			
			for(int neighbor : graph.get(cur)) {
				students[neighbor]--;
				if(students[neighbor] == 0) {
					pq.offer(neighbor);
				}
			}
		}
		
		for(int stu:result) {
			System.out.print(stu + " ");
		}
		
		sc.close();
		
		
	}

}
  • students[i]: 노드 i 로 들어오는 진입 차수
  • graph: 인접 리스트로 간선 정보 저장
  • 진입 차수 0인 노드를 우선순위 큐에 삽입
  • 우선순위 큐를 이용한 위상 정렬 수행
  • 큐에서 작은 숫자부터 꺼내며 진행
  • cur 에 연결된 노드들의 진입 차수를 감소
  • 새롭게 진입 차수 0이 되면 큐에 삽입
  • 위상 정렬 결과 출력

 

'[LG 유플러스] 유레카 > 코딩테스트' 카테고리의 다른 글

[JAVA]SWEA - 2001 파리 퇴치 (D2)  (0) 2025.02.25
[JS]프로그래머스 - 구명보트 (Lv.2)  (0) 2025.02.25
[JS]프로그래머스 - 피로도 (Lv.2)  (0) 2025.02.25
[JS]프로그래머스 - 프로세스 (Lv.2)  (0) 2025.02.24
[JS]프로그래머스 - 기능개발 (Lv.2)  (0) 2025.02.24
'[LG 유플러스] 유레카/코딩테스트' 카테고리의 다른 글
  • [JAVA]SWEA - 2001 파리 퇴치 (D2)
  • [JS]프로그래머스 - 구명보트 (Lv.2)
  • [JS]프로그래머스 - 피로도 (Lv.2)
  • [JS]프로그래머스 - 프로세스 (Lv.2)
leeemingyu
leeemingyu
leeemingyu
ye
leeemingyu

블로그 메뉴

  • GitHub
  • Instagram
    전체
    오늘
    어제
    • 전체보기 (68)
      • GDSC (4)
        • 실시간 채팅 구현 (4)
      • [LG 유플러스] 유레카 (63)
        • Today I Learned (37)
        • 코딩테스트 (22)
        • 프로젝트 (4)

    공지사항

    인기 글

    최근 댓글

    최근 글

    hELLO · Designed By 정상우.v4.2.2
    leeemingyu
    [JAVA]백준 - 2252번 줄 세우기(골드3)
    상단으로

    티스토리툴바

    단축키

    내 블로그

    내 블로그 - 관리자 홈 전환
    Q
    Q
    새 글 쓰기
    W
    W

    블로그 게시글

    글 수정 (권한 있는 경우)
    E
    E
    댓글 영역으로 이동
    C
    C

    모든 영역

    이 페이지의 URL 복사
    S
    S
    맨 위로 이동
    T
    T
    티스토리 홈 이동
    H
    H
    단축키 안내
    Shift + /
    ⇧ + /

    * 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.