일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Redis
- BFS
- vuejs
- 도커
- fast api
- POD
- OpenShift
- kubernetes
- 오픈시프트
- 생성형
- Docker
- vue.js
- LeetCode
- 쿠버네티스
- 컨설턴트
- 솔루션조사
- fastapi
- SpringBoot
- 컨설팅
- 메세지큐
- Machine Learning
- Python
- jpa
- 생성형 AI
- 로깅
- 리트코드
- LLaMa
- k8s
- GPT
- 머신러닝
- Today
- Total
수 많은 우문은 현답을 만든다
(Medium) 허프만 코딩 본문
허프만 코딩
: 데이터 문자의 등장 비도수에 따라서 다른 길이의 부호화를 사용하는 알고리즘
문제 링크
: Tree: Huffman Decoding | HackerRank
풀이 :
"""class Node:
def __init__(self, freq,data):
self.freq= freq
self.data=data
self.left = None
self.right = None
"""
# Enter your code here. Read input from STDIN. Print output to STDOUT
def decodeHuff(root, s):
//여기서 핵심은, 단순 재귀로 짜면 안되고, leaf에서 다시 루트로 돌아가야한다는것.
//즉 두 스텝이건 세 스텝이건 원복해야하며 순차적 원복이 아니다. 이럴땐 포인터 개념을 쓰자.
result = ""
curNode = root
index = 0
while index < len(s):
if s[index] == "1":
curNode = curNode.right
else:
curNode = curNode.left
if not curNode.right and not curNode.left:
result += curNode.data
curNode = root //Key Point !!
index += 1
print(result)
'코딩테스트 > Tree' 카테고리의 다른 글
(Medium) BST 여부 검증 (0) | 2023.10.26 |
---|---|
(Medium) BST LCA 구하기 (0) | 2023.10.26 |
(Easy) 트리 높이 구하기 (0) | 2023.10.24 |
(Easy) Maximum Depth of Binary Tree (0) | 2023.06.18 |
(Easy) Invert Binary Tree (0) | 2023.06.18 |