ν”Όλ“œλ‘œ λŒμ•„κ°€κΈ°
# πŸ‘½ Verifying an Alien Dictionary (LeetCode 953)
Dev.toDev.to
Backend

O(1) Space 맡핑을 ν†΅ν•œ 외계어 Lexicographical Sorting 검증 κ΅¬ν˜„

# πŸ‘½ Verifying an Alien Dictionary (LeetCode 953)

swati goyal2026λ…„ 6μ›” 15일5λΆ„beginner

Context

ν‘œμ€€ μ•ŒνŒŒλ²³ μˆœμ„œκ°€ μ•„λ‹Œ μ‚¬μš©μž μ •μ˜ Orderλ₯Ό λ”°λ₯΄λŠ” 단어 리슀트의 μ •λ ¬ μƒνƒœ 검증 ν•„μš”. λ‹¨μˆœ 문자 λΉ„κ΅λ‘œλŠ” λΆˆκ°€λŠ₯ν•œ μž„μ˜μ˜ μˆœμœ„ 체계(Custom Ranking) 적용이 핡심 과제.

Technical Solution

  • μ•ŒνŒŒλ²³ 26자의 인덱슀 μœ„μΉ˜λ₯Ό μ €μž₯ν•˜λŠ” Fixed-size Array 기반의 Character Ranking Map ꡬ좕
  • μΈμ ‘ν•œ 두 단어(Adjacent Pair)만 λΉ„κ΅ν•˜μ—¬ 전체 리슀트의 μ •λ ¬ μƒνƒœλ₯Ό νŒλ³„ν•˜λŠ” 효율적 루프 섀계
  • 문자 κ°„ 뢈일치 λ°œμƒ μ‹œ Map에 μ €μž₯된 Index 값을 λΉ„κ΅ν•˜μ—¬ μ„ ν›„ 관계λ₯Ό μ¦‰μ‹œ νŒλ³„ν•˜λŠ” 둜직 적용
  • 곡톡 접두사(Prefix)λ₯Ό κ°€μ§„ 단어 μŒμ— λŒ€ν•΄ 짧은 단어가 λ¨Όμ € μ˜€λŠ” Lexicographical κ·œμΉ™μ„ ν†΅ν•œ μ˜ˆμ™Έ 처리
  • λΆˆν•„μš”ν•œ 전체 μ •λ ¬ 과정을 λ°°μ œν•˜κ³  단 ν•œ 번의 순회둜 검증을 μ™„λ£Œν•˜λŠ” 단방ν–₯ μŠ€μΊ” 방식 채택

1. μ»€μŠ€ν…€ μ •λ ¬ κΈ°μ€€ ν•„μš” μ‹œ Hash Map λ˜λŠ” Arrayλ₯Ό ν†΅ν•œ Rank Mapping μš°μ„  κ³ λ €

2. λ¬Έμžμ—΄ 비ꡐ μ‹œ Prefix Case(예: apple vs app)에 λŒ€ν•œ 경계 쑰건 검증 ν•„μˆ˜

3. 전체 데이터 μ •λ ¬ λŒ€μ‹  인접 μš”μ†Œ κ°„μ˜ 일관성(Consistency) ν™•μΈμœΌλ‘œ μ‹œκ°„ λ³΅μž‘λ„ μ΅œμ ν™” κ°€λŠ₯ μ—¬λΆ€ κ²€ν† 

원문 읽기