A-008● Day 082026.05.10mediumleetcode #271neetcode150
문자열 인코딩과 디코딩
#array#string#design
01
문제
· problem문자열 목록을 하나의 인코딩된 문자열로 변환하는 encode 함수와, 인코딩된 문자열을 원래의 문자열 목록으로 복원하는 decode 함수를 설계하세요. 인코딩 포맷은 쉼표나 특수 문자를 포함할 수 있는 임의의 문자열을 정확히 처리할 수 있어야 합니다. 빈 문자열도 포함될 수 있습니다.
제약
- · 1 ≤ number of strings ≤ 1e2
- · 0 ≤ length of each string ≤ 1e4
- · Strings can contain any ASCII characters
// 지문은 본인 언어 요약 — 원문은 위 링크에서
입출력 예시
02
사전 사고
· pre-solve● 1리스트 출력→● 2선택→● 3정답 공개
- ☐인코딩된 문자열에서 어떻게 각 문자열의 경계를 구분할 것인가?
- ☐빈 문자열(empty string)은 어떻게 처리되는가?
- ☐"#" 문자가 원본 문자열에 포함되면 어떻게 되는가?
- ☐매우 큰 문자열(예: 1e4 길이)도 효율적으로 처리되는가?
- ☐CSV 형식(쉼표로 구분)을 사용하면 더 간단하지 않을까?
- ☐각 문자열을 고정 길이(예: 4바이트) 정수로 인코딩하는 것이 낫지 않을까?
- ☐디코더에서 길이를 어떻게 파싱하는가?
던질 질문에 체크하고 확인을 누르세요
// 결과는 세션 메모리만 — 새로고침하면 초기화됩니다 (반복 학습)
03
논리 구조
· logic● 1슬롯 출력→● 2슬롯별 선택→● 3정답 공개
// 각 슬롯에 들어갈 코드 한 줄을 골라 알고리즘 흐름을 합성해보세요. 코드는 안 짜지만 논리 뼈대는 직접.
step 1· 결과 문자열 초기화
○
res = ""
○
res = []
○
res = ""s
step 2· 각 문자열 반복
○
for s in strs:
○
for i in range(len(strs)):
○
while strs:
step 3· 길이 + 구분자 + 문자열 추가│ 중첩
○
res += str(len(s)) + "#" + s
○
res += s + "#" + str(len(s))
○
res += "#" + str(len(s)) + s
○
res += str(len(s)) + s
step 4· 인코딩된 결과 반환
○
return res
○
return res[:-1]
○
return ""
각 슬롯에 한 줄씩 골라보세요
// format: slot — 다른 패턴(재귀·DP 등) 은 ordering·state-first 등 별도 format. ADR-08 후속.
04
문제풀이 · 트레이스
· solve머릿속 dry-run 케이스
// 각 케이스를 머릿속으로 따라가보세요. 막히면 아래 worked example 펼침.
case 1
["Hello","World"]→
5#Hello5#World
case 2
[""]→
0#
// UI 가 walk-through 안 함 — 학습자가 머릿속으로. 막히면 worked example 펼침.