카테고리 없음

백준 swift Tree (TIL)

양시관 2024. 10. 26. 14:32

오늘은 주말이기도 하고 저녁에 약속이 있기 때문에! 가볍게 백준  TIL 을 해보려고 합니다! 그럼 간다

 

일단 오늘 푼 문제는 9934 번 문제임미다 음, Tree 를 깊게 생각해보고 구현했던적이 많지 않았던거같아서 
일단 먼저 Tree에 대해서 어떻게 구현하는지에 대해 공부를 먼저 했숨다 , 후위 , 중위 , 전위 연산이 있던건 

알았지만 코드로 보니 완전히 다른느낌을 받았슴다 그래도 9934 번은 생각보다 쉽게 풀려서 다행이였습니다

 

 

그럼 코드 보여드리겠슴다!

import Foundation

let K = Int(readLine()!)!
let list = readLine()!.split(separator: " ").map { Int(String($0))! }
var answer = Array(repeating: [Int](), count: K)

func buildBinaryTree(left: Int, right: Int, level: Int) {
    // 중단 조건: 왼쪽 인덱스가 오른쪽 인덱스를 넘을 때
    guard left <= right else { return }

    // 중간 인덱스를 찾아 현재 레벨에 추가
    let mid = (left + right) / 2
    answer[level].append(list[mid])

    // 왼쪽 하위 배열 처리
    buildBinaryTree(left: left, right: mid - 1, level: level + 1)
    // 오른쪽 하위 배열 처리
    buildBinaryTree(left: mid + 1, right: right, level: level + 1)
}

// 트리 생성 시작
buildBinaryTree(left: 0, right: list.count - 1, level: 0)

// 각 레벨별 출력
for levelNodes in answer {
    print(levelNodes.map { String($0) }.joined(separator: " "))
}

최대한  주석을 달면서 설명을 했슴미다 

이상 꽤 빠르게 채점되어서 기분이 좋네용 ㅎㅎ