#101
Silver IV
마지막 잎새
시간 제한
1s
메모리 제한
256MB
제출
22
정답
14
맞힌 사람
13
정답 비율
61.9%

문제

NN개의 정점으로 이루어진 트리가 주어진다. 각 정점은 11부터 NN까지 번호가 매겨져 있다. 이때, 리프 노드를 출력하는 프로그램을 작성해 보자.

무슨 소리인지 모르겠다면 아래 힌트를 참고하자.

입력

첫째 줄에 정점의 개수 N(1N20000)N(1 ≤ N ≤ 20\,000)가 주어진다.

둘째 줄부터 N1N - 1개의 줄에 걸쳐 간선 정보가 u vu\ v의 형태로 주어진다. uuvv를 잇는 양방향 간선이 존재한다는 의미다.

출력

리프 노드의 번호를 오름차순으로 정렬하여 공백으로 구분하여 출력한다.

예제 입력 1

5
1 2
2 3
2 4
1 5

예제 출력 1

3 4 5

예제 입력 2

6
5 1
4 2
5 2
2 3
6 5

예제 출력 2

1 3 4 6

힌트

그래프란 정점과 두 정점을 잇는 간선으로 이루어진 집합이다.

위 그림은 77개의 정점(원 모양)과 88개의 간선(실선)으로 이루어진 그래프를 시각화한 그림이다. 원 내부의 수는 각 정점의 구별을 위해 임의로 매긴 것이다. 편의상 원 내부의 수가 XX인 정점을 XX번 정점이라 하겠다.

간선은 항상 두 정점을 잇게 된다. 위 그림에서 11번 정점과 33번 정점을 잇는 간선은 존재하지만, 66번 정점과 55번 정점을 잇는 간선은 존재하지 않는다.

정점의 차수(Degree)란 해당 정점과 연결된 간선의 개수를 의미한다. 22번 정점의 차수는 11이고, 33번 정점의 차수는 33이다.

그래프에서 경로(Path)란 서로 연결된 정점을 나열한 것을 의미한다. 위 그림에서 13471-3-4-753155-3-1-5는 경로지만, 242-4는 경로가 아니다.

그래프에서 사이클(Cycle)이란 임의의 한 정점에서 시작해서, 시작 정점을 제외한 어떤 정점도, 어떤 간선도 22번 이상 지나가지 않고 시작점으로 되돌아올 수 있는 경로를 말한다. 위 그림에서 35133-5-1-31674311-6-7-4-3-1인 사이클이 존재한다. 2622-6-2는 같은 간선을 22번 이상 사용했으므로 사이클이 아니고, 2612-6-1은 시작 정점으로 돌아오는 경로가 아니므로 역시 사이클이 아니다.

만약 그래프에 사이클이 단 하나라도 존재하지 않는다면, 그 그래프는 트리(Tree)라고 부른다. 위 그래프는 트리가 아니지만, 간선 몇 개를 제거해서 아래 그림과 같이 트리로 만들 수 있다.

트리의 가장 큰 특징은 바로, 임의의 두 정점을 잇는 경로가 유일하다는 것이다. 이 그림에서 11번 정점과 22번 정점을 잇는 경로는 1621-6-2이며, 이는 유일하다.

또한, 간선의 개수는 항상 정점의 개수보다 하나 작다. 위 그림(트리)에서 정점은 총 77개인데, 간선은 66개인 것을 확인할 수 있다. 간선의 개수가 정점의 개수보다 같거나 크다면 해당 그래프에는 반드시 사이클이 존재하기 때문이고, 정점의 개수보다 둘 이상 작게 되면 연결하지 못하는 정점이 생기기 때문이다. 이들에 대한 자세한 증명은 직접 해보자.

트리의 어떤 정점의 차수가 11이라면 그 정점은 리프(Leaf) 노드다. 이제 무엇을 해야할 지 알았을 것이다. 자, 문제를 해결해보자!

알고리즘 분류
코드 제출

코드를 제출하려면 로그인이 필요합니다.

로그인
내 제출
제출 내역이 없습니다.
맞은 사람
#순위사용자언어시간메모리코드 길이
7048🥇
Python26ms8552KB212B
5179🥈
아무튼_비전공자
C41ms1496KB541B
6359🥉
홍진영
PyPy44ms58116KB209B
49494
최태규
Python264ms10780KB265B
51265
기타치는_공돌이
Python292ms11528KB237B
51716
멋진승주
Python301ms16712KB1039B
49027
지읒히읗
Python318ms10592KB215B
47018
참가상_정조준
Python334ms10972KB252B
52019
Null_is_fine
Java1079ms44032KB641B
524710
싹쓰리
Java1112ms47620KB1084B
500811
SSALMUK2
Java1117ms47412KB1467B
522012
SSALMUK
Java1128ms47580KB1260B
534713
202500392
Java1131ms47176KB1260B
난이도 투표
Silver IV1명 투표· 약 2개월 전
로그인 후 AC 받으면 투표할 수 있습니다.
전체 제출
#사용자문제결과언어시간메모리코드 길이제출 시간
7048
맞았습니다
Python26ms8552KB212B2026. 05. 24. 11:53
7046
맞았습니다
Python26ms8564KB212B2026. 05. 24. 11:50
6359
맞았습니다
PyPy44ms58116KB209B2026. 05. 19. 06:11
5347
맞았습니다
Java1131ms47176KB1260B2025. 05. 25. 09:28