December 09, 2025
ν΄λΉ λ¬Έμ λ λλ©μΈ λ°©λ¬Έ νμκ° μ£Όμ΄μ‘μ λ, κ° μλΈλλ©μΈμ λ°©λ¬Έ νμλ₯Ό ꡬνμ¬ μ΅μ’ μ μΌλ‘ λͺ¨λ λλ©μΈκ³Ό μλΈλλ©μΈμ λ°©λ¬Έ νμλ₯Ό λ°ννλ λ¬Έμ μ λλ€.
κΈ°λ³Έμ μΌλ‘ ν€-λ°Έλ₯λ₯Ό μ μ₯νλ ν΄μλ§΅μ νμ©νλ λ¬Έμ μ λλ€.
class Solution:
def subdomainVisits(self, cpdomains: List[str]) -> List[str]:
doms = defaultdict(list)
for cpdomain in cpdomains:
count, domain = cpdomain.split()
count = int(count)
subdomains = domain.split(".")
sd_n = len(subdomains)
parsed_sd = []
for i in range(sd_n-1, -1, -1):
parsed = ".".join(subdomains[i:sd_n])
parsed_sd.append(parsed)
for subdomain in parsed_sd:
if subdomain in doms.keys():
doms[subdomain] += count
else:
doms[subdomain] = count
ans = []
for k,v in zip(doms, doms.values()):
ans.append((str(v) + " " + k))
return ans
νκΈ΄ νμΌλ λ€μ μ§μ λΆνκ² μ½λλ₯Ό μ§°κΈ°μ κ°μ μ νλ€λ©΄ λ€μκ³Ό κ°μ΄ ν΄λ³Ό μ μμ΅λλ€.
κ°μ μ¬ν:
defaultdictλ₯Ό νμ©νκ³ μκΈ° λλ¬Έμ ν€ μ‘΄μ¬ μ¬λΆλ₯Ό νμΈνλ λΆλΆμ μ κ±°ν μ μμ΅λλ€.defaultdict(int)λ₯Ό μ¬μ©νμ¬ list λμ κΈ°λ³Έκ°μ 0μΌλ‘ μ€μ ν μ μμ΅λλ€.-1λΆν° 0κΉμ§ μμμΌλ‘ μννλ λμ , list μ¬λΌμ΄μ±μ νμ©νμ¬ μλΈλλ©μΈμ μμ±ν μ μμ΅λλ€.μ΄λ κ² μμ νλκΉ νκ²° κ°κ²°ν΄μ§ μ½λκ° λμμ΅λλ€.
class Solution:
def subdomainVisits(self, cpdomains: List[str]) -> List[str]:
doms = defaultdict(int)
for cpdomain in cpdomains:
count, domain = cpdomain.split()
count = int(count)
subdomains = domain.split(".")
for i in range(len(subdomains)):
subdomain = ".".join(subdomains[i:])
doms[subdomain] += count
return [f"{count} {domain}" for domain,count in doms.items()]
O(n * m); nμ cpdomains 리μ€νΈμ κΈΈμ΄, mμ λλ©μΈμ μ΅λ κΈΈμ΄μ
λλ€. κ° λλ©μΈμ λν΄ μλΈλλ©μΈμ μμ±νκ³ ν΄μλ§΅μ μ κ·Όνλ λ° κ±Έλ¦¬λ μκ°μ
λλ€.
O(k); kλ κ³ μ ν μλΈλλ©μΈμ μμ λλ€. ν΄μλ§΅μ μ μ₯λλ λλ©μΈκ³Ό μλΈλλ©μΈμ μμ λΉλ‘ν©λλ€.
Constraints:
1 <= cpdomain.length <= 100
1 <= cpdomain[i].length <= 100
cpdomain[i] follows either the "repi d1i.d2i.d3i" format or the "repi d1i.d2i" format.
repi is an integer in the range [1, 10^4].
d1i, d2i, and d3i consist of lowercase English letters.