Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Week 5] FORTRESS self review - profitjean #177

Open
profitjean opened this issue Feb 24, 2022 · 1 comment
Open

[Week 5] FORTRESS self review - profitjean #177

profitjean opened this issue Feb 24, 2022 · 1 comment
Labels
2기 스터디 2기 WA Wrong Answer

Comments

@profitjean
Copy link
Collaborator

profitjean commented Feb 24, 2022

FORTRESS self review

1. 해결 시도 과정

현재 성에서 가장 많은 성벽을 넘어야하는 경로는
트리에서 가장 멀리 있는 두 노드를 찾는것과 동일합니다.
현재 노드를 루드로 하는 트리에서 최대 높이를 구하는 재귀함수(max_height)을 구현하고
is_child로 연결관계를 파악하고자 했습니다.

2. 작성한 코드와 설명

def do_enclose(root, child, walls):
    R = walls[root]
    C = walls[child]

    if R[2] > C[2]:
        return (R[2] - C[2]) ** 2 > (R[1]-C[1]) ** 2 + (R[0]-C[0]) ** 2
def is_child(root, child, walls):
    if not do_enclose(root, child, walls):
        return False
    for i in range(len(walls)):
        if i != root and i != child and do_enclose(root, i, walls) and do_enclose(i, child, walls):
            return False
    return True
class Node:
    def __init__(self, root, walls):
        self.children = []
        for i in range(len(walls)):
            if is_child(root, i, walls):
                self.children.append(i)

def max_height(walls):
    longest = 0
    # node를 root로 하는 트리의 최대 높이
    # 이 트리 내에서 노드 간 최대 거리를 구한다
    def find(root):
        node = Node(root, walls)
        heights  = []
        for child in node.childern:
            # 루트 노드 내에서 서브 트리의 높이 저장
            heights.append(find(child))
        # 자식노드가 없다는 것은 자신이 제일 끝, 잎 노드
        if not heights:
            return 0

3. 막힌 점 및 개선 사항

최대 높이를 구하는 과정에서 막혔습니다.

@profitjean profitjean added WA Wrong Answer 2기 스터디 2기 labels Feb 24, 2022
@Queue-ri
Copy link
Owner

Queue-ri commented Mar 1, 2022

트리의 지름을 구하는 로직은 #173 (comment) 를 참고해주시기 바랍니다!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
2기 스터디 2기 WA Wrong Answer
Projects
None yet
Development

No branches or pull requests

2 participants