프로그래머스 3단계 : 길 찾기 게임 (Java 자바)

2023. 9. 13. 15:15·💻 코딩테스트/programmers
728x90

 

import java.util.*;
 
class Solution {
    
    int[][] result;
    int idx;
    
    public int[][] solution(int[][] nodeinfo) {
        //노드를 입력받는다.
        Node[] node = new Node[nodeinfo.length];
        for(int i = 0; i < nodeinfo.length; i++) {
            node[i] = new Node(nodeinfo[i][0], nodeinfo[i][1], i + 1, null, null);
        }
        //y값 큰 순서대로, y값 같다면 x값 작은 순서대로 정렬
        Arrays.sort(node, new Comparator<Node>() {
            @Override
            public int compare(Node n1, Node n2) {
                if(n1.y == n2.y) return n1.x - n2.x;
                else return n2.y - n1.y;
            }
        });
        
        //트리를 만든다.
        Node root = node[0];
        for(int i = 1; i < node.length; i++) {
            insertNode(root, node[i]); 
        }
        
        result = new int[2][nodeinfo.length];
        idx = 0;
        preorder(root); //전위 순회
        idx = 0;
        postorder(root); //후위 순회
        return result;
    }
    
    public void insertNode(Node parent, Node child) {
        if(parent.x > child.x) {
            if(parent.left == null) parent.left = child;
            else insertNode(parent.left, child);
        } else {
            if(parent.right == null) parent.right = child;
            else insertNode(parent.right, child);
        }
    }
    
    public void preorder(Node root) {
        if(root != null) {
            result[0][idx++] = root.value;
            preorder(root.left);
            preorder(root.right);
        }
    }
    
    public void postorder(Node root) {
        if(root != null) {
            postorder(root.left);
            postorder(root.right);
            result[1][idx++] = root.value;
        }
    }
    
    public class Node {
        int x;
        int y;
        int value;
        Node left;
        Node right;
        
        public Node(int x, int y, int value, Node left, Node right) {
            this.x = x;
            this.y = y;
            this.value = value;
            this.left = left;
            this.right = right;
        }
    }
}
728x90
저작자표시 비영리 변경금지 (새창열림)

'💻 코딩테스트 > programmers' 카테고리의 다른 글

프로그래머스 3단계 : 경주로 건설 (Java 자바)  (0) 2023.09.14
프로그래머스 3단계 : 다단계 칫솔 (Java 자바)  (0) 2023.09.13
프로그래머스 3단계 : 거스름돈 (Java 자바)  (0) 2023.09.13
프로그래머스 3단계 : 순위 (Java 자바)  (0) 2023.09.13
프로그래머스 3단계 : 풍선 터뜨리기 (Java 자바)  (0) 2023.09.12
'💻 코딩테스트/programmers' 카테고리의 다른 글
  • 프로그래머스 3단계 : 경주로 건설 (Java 자바)
  • 프로그래머스 3단계 : 다단계 칫솔 (Java 자바)
  • 프로그래머스 3단계 : 거스름돈 (Java 자바)
  • 프로그래머스 3단계 : 순위 (Java 자바)
gxxg
gxxg
함께 일하고 싶은 개발자를 꿈꾸는 예비개발자의 공부 기록
  • gxxg
    공공
    gxxg
  • 전체
    오늘
    어제
    • 분류 전체보기 (138)
      • ☁️ 구름 x 카카오 Deep Dive 풀스택 (7)
        • html, css (1)
        • Java (3)
        • 스프링 MVC (0)
      • 💻 코딩테스트 (89)
        • 백준 (2)
        • programmers (87)
      • SQLD (1)
      • Language (3)
        • Java (2)
        • JavaScript (1)
      • Style Sheet (0)
        • CSS (0)
        • SCSS & SASS (0)
      • DBMS (2)
        • Oracle (2)
        • MySQL (0)
        • postgresql (0)
        • 데이터베이스 기초 이론 (0)
      • React (0)
      • SpringBoot (0)
      • JSP (2)
      • 알고리즘 (0)
      • 2023-02 몰입형 SW 정규 교육 (24)
        • 9월 프로젝트 (8)
      • 벽돌깨기 (4)
      • Etc (4)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    코테
    spring
    javascript
    3단계
    이클립스
    티스토리챌린지
    JSP
    코딩테스트
    구현체
    0단계
    톰캣
    자바
    CSS
    HTML
    프로젝트 구조
    junit 테스트
    POST
    2단계
    프로그래머스
    java
    자바스크립트
    DFS
    Lv2
    springboot
    Lv0
    오블완
    LV3
    programmers
    회원 관리 시스템
    eclipse
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
gxxg
프로그래머스 3단계 : 길 찾기 게임 (Java 자바)
상단으로

티스토리툴바