728x90 전체 글380 [프로그래머스] 스킬트리 문제 분석 특별히 분석할게 없었다. 그냥 CBD 라면 스킬트리에서 해당 인덱스를 따로 저장한다. skill_trees의 BACDE 에서 C, B, D 각각의 index를 찾는다. C = 2, B = 0, D = 3 인덱스 순으로 보면 B(0), C(2), D(3) 순으로 스킬을 익혔기 때문에 BACDE 를 위반한다. 불가능함. 위처럼 1차검사 2차 예외 상황 선행스킬 하나만 찍었을때 3차 선행스킬 존재 하지 않을때 각각의 예외상황을 처리해 주었다. 코드 #include #include #include using namespace std; bool checkOrderFunction(string aSkill, string aSkillTree); int solution(string skill, vector s.. 2021. 6. 12. [Algorithm] Binary Search Tree - Tree traversal Binary Search Tree 의 Tree traversal구현 마지막으로 순회를 알아보자 순회의 종류 Preorder(전위 순회) : Root -> Left -> Right 순으로 방문한다. Inorder(중위 순회) : Left -> Root -> Right 순으로 방문한다. Postorder(후위 순회) : Left -> Right-> Root 순으로 방문한다. 그림으로 보는게 빠를것 같다. 순회 예시 코드 public void preOrder(Node node) { if (node == null) { return; } System.out.println(node.getData()); preOrder(node.left); preOrder(node.right); } public void inOrde.. 2021. 6. 10. [Algorithm] Binary Search Tree - Delete Binary Search Tree 의 Delete구현 지금 까지 Binary Search Tree의 정의, Insert, Search, Successor, Predecessor 에 대해서 알아봤다. 아래에 링크가 있으니 처음부터 보면 도움이 될것이라 생각합니다. Delete 구현 delet를 구현할때 다음과 같은 사항을 고려해야한다. 삭제할 노드의 자식이 아예 없을때 삭제할 노드의 자식이 하나만 있을때 삭제할 노도의 자식이 둘다 있을때 왜 고려해야 될까? 우리는 Insert 할때 규칙을 만들어서 Binary Search Tree를 구현하였다. 그렇기 때문에 규칙을 유지해 가면서 Tree를 삭제해야 된다. 삭제 노드의 자식이 아예 없을때 제일 간단하다 그냥 삭제노드와 삭제노드의 부모와 연결을 끊어준다. !.. 2021. 6. 9. [Algorithm] Binary Search Tree - Successor, Predecessor Successor, Predecessor 지금 까지 Binary Search Tree의 정의, Insert, Search에 대해서 알아봤다. 그럼 왜? Delete를 먼저 구현하지 않고 Successor, Predecessor 를 먼저 구현해보는것일까? 그것은 Delete를 할때 여러가지 조건이 있고 Delete를 안정적으로하기 위해서 필요하기 때문이다. Successor 란? 선택한 노드의 오른쪽 서브트리중 가장 작은값을 가지는 노드를 의미한다. 50 을 선택하면 일단 50 노드의 오른쪽 서브트리를 찾는다 그중 가장 최소값 즉 왼쪽으로 계속 이동하면서 작은 값을 찾는다. 그말인 즉슨 선택한 노드보다 크면서 제일 작은값이다. Successor 의 코드구현 public Node getSuccessor(No.. 2021. 6. 8. 이전 1 ··· 79 80 81 82 83 84 85 ··· 95 다음 728x90 반응형