https://www.acmicpc.net/problem/14244
14244번: 트리 만들기
n과 m이 주어졌을 때, n개의 노드로 이루어져 있고, m개의 리프로 이루어져 있는 트리를 만드는 프로그램을 작성하시오. 항상 정답이 존재하는 경우만 입력으로 주어진다. 트리는 사이클이 없는
www.acmicpc.net
import sys
n,m=map(int,sys.stdin.readline().split())
print(0,1)
for i in range(1,n-m+1):
print(i,i+1)
if m!=2:
for i in range(n-m+2,n):
print(n-m,i)
m>2인 경우 0번 노드와 마지막 m-1개의 노드를 리프 노드로 만들면 된다.
예로 n=6, m=4일 때, 0번 노드가 하나의 리프노드이므로 2개의 중간 노드를 두고
나머지 3,4,5 번 노드를 리프노드로 만들면 된다. (0번 노드도 리프 노드 임에 유의한다.)
m==2인 경우는 양 끝 노드가 리프 노드가 되는 경우이므로 한줄로 이어붙이면 된다.
'알고리즘||코딩테스트 > 백준' 카테고리의 다른 글
[백준 9934번] 완전 이진 트리 (Silver1) (0) | 2023.06.24 |
---|---|
1991번 트리 순회(Silver1) (0) | 2023.06.23 |
1806번 부분합(Gold4) (0) | 2023.06.23 |
25682번 체스판 다시 칠하기2 (Gold5) (0) | 2023.06.22 |
11660번 구간 합 구하기5(Silver1) (0) | 2023.06.21 |