https://leetcode.com/problems/armstrong-number/
class Solution:
def isArmstrong(self, n: int) -> bool:
num = n
ans = 0
while num:
ans += (num%10) ** len(str(n))
num //= 10
if ans == n:
return True
else:
return False
num
에 n
복사 후
한자리씩 n제곱한 값은 ans
에 더해주고
ans
와 n
비교해서 같으면 True, 다르면 False return
문제를 꼼꼼히 읽자..^^
https://leetcode.com/problems/construct-binary-search-tree-from-preorder-traversal/
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def bstFromPreorder(self, preorder: List[int]) -> TreeNode:
root = TreeNode(preorder.pop(0))
for i in range(len(preorder)):
r = root
while True:
if preorder[i] < r.val:
if r.left:
r = r.left
else:
r.left = TreeNode(preorder[i])
break
else:
if r.right:
r = r.right
else:
r.right = TreeNode(preorder[i])
break
return root
preorder[0]
값으로 root
를 만들어줌
나머지 값들은 root
에서 시작해서 트리 끝쪽의 적절한 위치 찾아주기
=> 작으면 왼쪽으로, 크면 오른쪽으로
=> 루트의 left 나 right 가 비어있는 곳까지 찾아가서 TreeNode 생성
=> 자리 찾으면 break 후, 다음 값 차례~