Data Engineering/Python
[코테] 프로그래머스 - 길 찾기 게임 Python 코드
by strongstar
2025. 10. 25.
import sys
sys.setrecursionlimit(10**6) # 재귀 횟수 최대 100만으로 증가
def solution(nodeinfo):
class Node:
def __init__(self, num, x, y):
self.num = num
self.x = x
self.y = y
self.left = None
self.right = None
def insertNode(parent, child):
if child.x < parent.x:
if parent.left is None:
parent.left = child
else:
insertNode(parent.left, child)
else:
if parent.right is None:
parent.right = child
else:
insertNode(parent.right, child)
preorderList = [] # 전위 순회
def preorder(node):
if node is None:
return
preorderList.append(node.num)
preorder(node.left)
preorder(node.right)
postorderList = [] # 후위 순회
def postorder(node):
if node is None:
return
postorder(node.left)
postorder(node.right)
postorderList.append(node.num)
nodeinfo = [[i+1, x, y] for i, [x, y] in enumerate(nodeinfo)] # [num, x, y]
nodeinfo.sort(key=lambda x: (-x[2], x[1])) # order by y desc, x asc
root = Node(*nodeinfo[0]) # 앞에 * 붙여야 num, x, y 변수로 각각 전달됨
for node in nodeinfo[1:]: # root 노드는 제외
insertNode(root, Node(*node)) # 여기도 * 주의
preorder(root)
postorder(root)
return [preorderList, postorderList]
# https://school.programmers.co.kr/learn/courses/30/lessons/42892