[백준] 14244- 트리 만들기 (S4)

2022. 2. 14. 23:15·알고리즘 (PS)/BOJ
반응형

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

 

14244번: 트리 만들기

n과 m이 주어졌을 때, n개의 노드로 이루어져 있고, m개의 리프로 이루어져 있는 트리를 만드는 프로그램을 작성하시오. 항상 정답이 존재하는 경우만 입력으로 주어진다. 트리는 사이클이 없는

www.acmicpc.net

난이도는 쉽지 않아보이는데 의외로 쉽다.

알고리즘 분류에 나와있듯 트리를 이용한 구성적인 문제다.

트리가 어떻게 구성되는지 일반화 될 수 있는 규칙을 찾아 문제를 풀면 된다.

 

문제 조건에 의해 리프노드는 항상 최소 2개이고, 답이 항상 존재한다.

리프노드가 2개인 경우는 딱 한가지다. 모든 노드가 일직선으로 연결되면 된다.

 

리프노드가 3개 이상인 경우는 하나의 중심 노드에 대해 리프노드를 3개 만들면 된다.

더 간단하게 생각하면, 일단 중심 노드에 대해 리프노드가 존재할 가지 3개를 만들어두고,

남는 노드들은 가지에 계속 일직선으로 이어붙여서 리프노드 개수가 늘어나지 않도록 유지해주면 된다.

 

리프노드가 2개인 경우가 코너케이스인 점을 고려하여 위 내용을 구현하면 된다.

리프노드가 3개 이상이라 하나의 중심노드에 리프노드가 붙는 경우, 중심노드는 리프로서 세지 않지만,

리프노드가 2개인 경우 중심노드에 가지하나만 뻗어서 계속 붙인다고 생각하여

중심노드도 리프로서 포함하면 구현이 편해진다.

 

n, m = map(int, input().split())
leaf = 0
if m == 2:
    leaf = 1 # 중심 노드를 리프로 포함
    
last_leaf = 0
for i in range(1, n):
    if m > leaf:
        print(0, i)
        leaf += 1
    else:
        print(last_leaf, i)
    last_leaf = i

 

반응형
저작자표시 비영리 변경금지 (새창열림)

'알고리즘 (PS) > BOJ' 카테고리의 다른 글

[백준] 19591 - 독특한 계산기 (G3)  (2) 2022.03.26
[백준] 16566 - 카드 게임 (P5)  (2) 2022.03.14
[백준] 9527 - 1의 개수 세기(Counting ones) (G2)  (0) 2022.02.13
[백준] 17143 - 낚시왕 (G2)  (0) 2022.02.11
[백준] 1701 - Cubeditor (G2)  (0) 2022.01.31
'알고리즘 (PS)/BOJ' 카테고리의 다른 글
  • [백준] 19591 - 독특한 계산기 (G3)
  • [백준] 16566 - 카드 게임 (P5)
  • [백준] 9527 - 1의 개수 세기(Counting ones) (G2)
  • [백준] 17143 - 낚시왕 (G2)
에버듀
에버듀
개발은 좋은데 뭘로 개발할까
  • 에버듀
    Blog. 에버듀
    에버듀
  • 전체
    오늘
    어제
    • 분류 전체보기 (614)
      • 개인 프로젝트 (43)
        • 토이 프로젝트 (3)
        • [2020] 카카오톡 봇 (9)
        • [2021] 코드악보 공유APP (22)
        • [2022] 유튜브 뮤직 클론코딩 (9)
        • [2025] 한글 SQL 데이터베이스 (0)
      • 팀 프로젝트 (22)
        • [2020] 인공지능 숫자야구 (4)
        • [2022] OSAM 온라인 해커톤 (10)
        • [2024] GDSC 프로젝트 트랙 (6)
        • [2025] 큰소리 웹 페이지 (2)
      • CS (335)
        • 자료구조 (19)
        • 어셈블리 (41)
        • 멀티미디어응용수학 (7)
        • 컴퓨터 구조 (29)
        • 알고리즘 분석 (4)
        • 컴퓨터 네트워크 (38)
        • 프로그래밍언어론 (15)
        • HCI 윈도우즈프로그래밍 (26)
        • 기초데이터베이스 (29)
        • 운영체제 (23)
        • 오토마타 (24)
        • 문제해결기법 (11)
        • 블록체인 (22)
        • 소프트웨어공학 (21)
        • 기계학습심화 (12)
        • 컴퓨터그래픽스와 메타버스 (8)
        • 분산시스템특론 (6)
      • 자기계발 (44)
        • 생각 정리 (22)
        • 대외활동 (11)
        • 동아리 (7)
        • 자격증 (3)
        • 머니 스터디 (1)
      • 알고리즘 (PS) (107)
        • BOJ (101)
        • Programmers (5)
        • 알고리즘 이모저모 (1)
      • WEB(BE) (8)
        • express.js (1)
        • Spring & Spring Boot (7)
      • WEB(FE) (2)
        • html, css, js (1)
        • React.js (1)
      • Tool & Language (6)
        • Edit Plus (1)
        • Git (1)
        • Python3 (2)
        • Java (2)
      • Infra (12)
        • AWS (1)
        • Oracle Cloud (8)
        • Firebase (2)
        • Network (1)
      • Android (18)
        • Java (6)
        • Flutter (12)
      • Window (2)
        • Visual Studio 없이 WPF (1)
        • MFC (1)
      • 독서 (14)
        • Inside Javascript (7)
        • Database Internals (6)
        • 한 글 후기 (1)
  • 링크

    • github
    • website
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
에버듀
[백준] 14244- 트리 만들기 (S4)
상단으로

티스토리툴바