-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. Weβll occasionally send you account related emails.
Already on GitHub? Sign in to your account
38-Munbin-Lee #155
38-Munbin-Lee #155
Conversation
μ μλ νΈλΌμ΄ μΌμ λ λ©λͺ¨λ¦¬ μ¬μ©λμ΄λ ν΅κ³Ό μκ° μ΄μΌ λμ€μ ¨λμ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
μμ° νΈλΌμ΄ λλ° μ²μ μμλ€μ γ γ·γ·γ·
λ€μ PRμ νΈλΌμ΄ λ¬Έμ νλ² νμ΄λ³΄κ² μλλ€
μ λ νλ² λ©λͺ¨μ₯μ λμ μ¬λ΄€λλ° μ λ ¬νλ©΄ κ·Έ μμκ±°λ§ νμνλ©΄ λ κ² κ°μμ κ·Έλ₯ 무μ¬μ½ ν λμ Έλ΄€λλ° μ§μ§ ν리λ€μ (μ νμ λ μ¬μ€ 100% μ₯λ΄μ λͺ»νμ)
import sys
def input(): return sys.stdin.readline().rstrip()
T = int(sys.stdin.readline())
for _ in range(T):
N = int(input())
phone_book = sorted([input() for _ in range(N)])
is_consistency = True
prev = phone_book[0]
for number in phone_book[1:]:
if number[:len(prev)] == prev:
is_consistency = False
break
prev = number
print("YES" if is_consistency else "NO")
ν리λκΉ κΈ°λΆμ μ’μλ° 100% λ§μ·λ€κ³ μ₯λ΄μ λͺ»ν μνλ‘ κ·Έλ₯ λμ Έλ³Έκ±°λΌ μ‘°κΈ μ»Ήsνλ€μ . νν
νΈλΌμ΄ ν€μλ κ°κ³ κ°λλ€.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
TrieλΌλ μλ£κ΅¬μ‘°λ μκ΅°μ λλΆμ μλ£κ΅¬μ‘° νλ λ μμκ°λλ€ !! ππTrieλ₯Ό μ¬μ©νλ λ€λ₯Έ λ¬Έμ λ κΆκΈνλ€μ. λ¬Έμ νΈλλΌ μκ³ νμ ¨μ΅λλ€ -!
μ λ μΌλ¨ μ λ ¬μ ν΄λκ³ , μμΌλ‘ λΉκ΅νλ©΄μ μΌκ΄μ±μ΄ μμΌλ©΄ λ°λ‘ λ°λ³΅λ¬Έμ λμ€λλ‘ κ΅¬ννμμ΅λλ€. ν΅κ³Όλ νμ§λ§ μ΅μ μΈμ§λ μ λͺ¨λ₯΄κ² λ€μ©.. μ©
import sys
case = int(sys.stdin.readline().strip())
phoneNum = []
result = []
for _ in range(case):
n = int(sys.stdin.readline().strip())
phone_list = []
for i in range(n):
phone_list.extend(list(map(str, sys.stdin.readline().strip().split())))
phone_list.sort()
phoneNum.append(phone_list)
for i in range(case):
isConsistent = True
for s in range(len(phoneNum[i]) - 1):
if phoneNum[i][s] == phoneNum[i][s + 1][:len(phoneNum[i][s])]:
isConsistent = False
break
if isConsistent:
result.append("YES")
else:
result.append("NO")
for res in result:
print(res)
(https://school.programmers.co.kr/learn/courses/30/lessons/17685) μ μ μ΄ λ¬Έμ νλ©΄μ μκ²λ μλ£κ΅¬μ‘°μΈλ° μ λ ₯ λ¬Έμμ΄μ λͺ¨λ λ¬Έμλ₯Ό λ Έλλ‘ νλ νΈλ¦¬λ₯Ό λ§λ ν, λ€μ λͺ¨λ λ¬Έμμ΄μ λν΄μ νΈλ¦¬ νμμ νλλ° μ€κ°μ ν΄λΉ λ¬Έμμ΄μ λ§μ§λ§ λ¬ΈμμΈ λ
Έλκ° λ¦¬νλ
Έλκ° μλλΌλ©΄ μΌκ΄μ±μ΄ μλ κ±°λ from sys import *
for _ in range(int(stdin.readline())):
n = int(stdin.readline())
nums = [stdin.readline().strip() for _ in range(n)]
tree = {}
for x in nums:
node = tree
for c in x:
if c not in node:
node[c] = {'leaf': True}
else:
node[c]['leaf'] = False
node = node[c]
is_valid = True
for x in nums:
node = tree
for i in range(len(x)):
node = node[x[i]]
if i == len(x) - 1 and len(node.values()) > 1:
is_valid = False
break
if not is_valid:
break
print('YES' if is_valid else 'NO') |
π λ¬Έμ λ§ν¬
https://www.acmicpc.net/problem/5052
βοΈ μμλ μκ°
1μκ°
β¨ μλ μ½λ
λ¬Έμ μ€λͺ
μ νλ²νΈ λͺ©λ‘μ΄ μ£Όμ΄μ§λ€.
μ΄ λ, μμμ μ νλ²νΈκ° λ€λ₯Έ μ νλ²νΈμ μ λμ΄μΈ κ²½μ°κ° μλμ§ νλ³νμ.
λ¨Όμ μμ νμμ ν΄λ³΄μ.
λͺ¨λ μ νλ²νΈ μμ ꡬνμ¬ ν μ νλ²νΈκ° λ€λ₯Έ μ νλ²νΈμ μ λμ΄μΈμ§ νμΈνλ©΄ λλ€.
λ°λΌμ$_nC_2 10$ -> μ½ 5μ΅ λ²μ μ°μ°μ΄ νμνλ€.
12, 45, 123 μΈ μ νλ²νΈκ° μ£Όμ΄μ‘μ λ,
μ΄λ₯Ό μ λ ¬νλ©΄
12, 123, 45κ° λλ€.
μ¦, μ λ ¬νλ©΄ λΉμ·ν μ νλ²νΈλΌλ¦¬ μΈμ νκ² λλ€!
λ°λΌμ μ λ ¬μ μ μΈν μκ°λ³΅μ‘λκ°$O(N)$ μΌλ‘ μ€μ΄λλ―λ‘ μκ° λ΄μ ν΄κ²°ν μ μλ€.
λλ μ΄ λ°©λ²μ λ μ¬λ¦¬μ§ λͺ»νκ³ λ€λ₯Έ λ°©λ²μΌλ‘ νμλλ°,
λ¬Έμ νκ·Έμ μ λ ¬μ΄ μ μλμ§ κΆκΈν΄μ λμ΄λ κΈ°μ¬ λ΄μμ λ³΄κ³ λ μ¬λ Έλ€.
λ΄κ° μ΄ λ¬Έμ λ₯Ό ν΄κ²°ν λ°©λ²μ νΈλΌμ΄(Trie)λ₯Ό μ¬μ©νλ κ²μ΄λ€.
νΈλΌμ΄λ λ¬Έμμ΄ μ§ν©μ κ΄λ¦¬νλ νΈλ¦¬λ€. λ£¨νΈ λ Έλμμ 리ν λ ΈλκΉμ§ μ°κ²°λ κ°μ μ λͺ¨λ μ΄μΌλ©΄ λ¨μ΄κ° μμ±λλ€.
Tλ Terminal, λμ΄λΌλ λ»μ΄λ€.
μ νλ²νΈλ€μ νΈλΌμ΄μ μ μ₯νλ©΄μ κ° μ νλ²νΈκ° μμμ μ νλ²νΈμ μ λμ΄μΈμ§ 체ν¬νλ©΄ λλ€.
κ·ΈλΌ μ΄λ»κ² 체ν¬νλ©΄ λ κΉ?
μ λμ΄μΈ μ νλ²νΈκ° λ¨Όμ μ λ ₯λλ κ²½μ°μ μ λμ΄μΈ μ νλ²νΈκ° λμ€μ μ λ ₯λλ κ²½μ°
2κ°μ§ μΌμ΄μ€λ‘ λλμ΄ μκ°ν΄λ³΄μ.
μ λμ΄μΈ μ νλ²νΈκ° λ¨Όμ μ λ ₯λλ κ²½μ°
ex. 911, 9112
λ¨Όμ 911μ νΈλΌμ΄μ μ μ₯νλ©΄
μ΄λ κ² λλ€.
κ·Έ ν, 9112λ₯Ό μ μ₯ν λ, 911 κΉμ§ μ μ₯νμ λ Terminalμ κ±°μΉλ―λ‘ μ΄ λ μ λμ΄μμ νμΈν μ μλ€.
μ¦, λ¬Έμλ₯Ό μμμλΆν° νλμ© μ μ₯νλ©΄μ Terminalμ κ±°μ³€λμ§ νμΈνλ©΄ λλ€.
μ λμ΄μΈ μ νλ²νΈκ° λμ€μ μ λ ₯λλ κ²½μ°
ex. 9112, 911
λ¨Όμ 9112λ₯Ό νΈλΌμ΄μ μ μ₯νλ©΄
μ΄λ κ² λλ€.
κ·Έλ¦¬κ³ 911μ νΈλΌμ΄μ μ μ₯νλ©΄
μ΄λ κ² λλ€.
첫λ²μ§Έ μΌμ΄μ€μ λ¬λ¦¬ μ μ₯ μ€ Terminalμ κ±°μΉμ§ μμλ€.
κ·Έλ°λ°, 911μμ Terminalμ΄ λμλλ°λ λΆκ΅¬νκ³ 911μ μμ 2(9112)κ° μ‘΄μ¬νλ€.
λ°λΌμ μ μ₯ μ’ λ£ ν Terminal λ Έλμ μμ λ Έλκ° μ‘΄μ¬νλμ§ νμΈνλ©΄ λλ€.
π μ 체 μ½λ