κ³λμλ
2024. 10. 4. 20:44
μ§ν©μ΄λ?
- κ°λ : μμμ μ€λ³΅μ΄ μλ μμλ€μ κ°λ μλ£κ΅¬μ‘°
- μ’
λ₯: μ ν μ§ν©, 무ν μ§ν© λ±, μ€μν κ²μ μνΈλ°°νμ μ§ν©
- μνΈλ°°νμ μ§ν©: κ΅μ§ν©μ΄ μλ μ§ν© κ΄κ³
- μ΄λ₯Ό νμ©νμ¬ μ΄λ―Έμ§ λΆν , μ΅μ μ μ₯νΈλ¦¬ μκ³ λ¦¬μ¦ κ΅¬ν, ν΄λ¬μ€ν°λ§ μμ λ±μ΄ κ°λ₯νλ€.
- μνΈλ°°νμ μ§ν©: κ΅μ§ν©μ΄ μλ μ§ν© κ΄κ³
μ§ν©μ μ°μ°
λ°°μ΄μ νμ©ν νΈλ¦¬λ‘ νν
- λν μμ: μ§ν©μ λννλ μμ -> λ£¨νΈ λ Έλλ₯Ό μκ°νμ
- νλμ λ°°μ΄λ‘ μνΈ λ°°νμ κ΄κ³λ₯Ό κ°μ§λ μ§ν©μ λͺ¨λ νννλ€. μ§ν©μ νΈλ¦¬λ‘ λ³κ²½ μ "λ°°μ΄μ κ°=μΈλ±μ€μ λΆλͺ¨λ Έλ"
- ex) set[9] = 3 -> 9μ λΆλͺ¨λ 3
μ λμ¨-νμΈλ μκ³ λ¦¬μ¦
- μ§ν© μκ³ λ¦¬μ¦μ μ£Όλ‘ μ°μ΄λ μ°μ°: ν©μΉκΈ°&νμ = Union&Find -> μ°Ύκ³ λμ ν©μΉμ
Find μ°μ°
- νΉμ λ Έλμ λ£¨νΈ λ Έλ νμ
- A,B λ λ Έλμ λ£¨νΈ λ Έλκ° κ°λ€? -> κ°μ μ§ν©
- νμ¬λ Έλμ λΆλͺ¨λ Έλ νμΈ
- λΆλͺ¨λ Έλκ° λ£¨νΈλ Έλμ΄λ©΄ μ’ λ£
- μ°ΎκΈ° μ°μ°μ΄ μ’ λ£λ λκΉμ§ λ°λ³΅
- μ¬κ·ν¨μλ‘ κ΅¬ννλ€.
- νμ§λ§ μ΅μ μΌ λ μκ° λ³΅μ‘λκ° O(N) -> κ²½λ‘ μμΆμΌλ‘ ν΄κ²°
Find μ°μ° λΉμ©λ¬Έμ -> κ²½λ‘ μμΆ
- μ§ν© ννλ₯Ό μ μ§νλ©° νΈλ¦¬ λμ΄λ₯Ό μ€μΈλ€.
Union μ°μ°
- λ μ§ν©μ νλλ‘ ν©μΉ¨ = λ μ§ν©μ 루νΈλ Έλλ₯Ό κ°κ² νλ€.
- λ μ§ν©μμ μ°ΎκΈ° μ°μ°μ ν΅ν΄ 루νΈλ Έλλ₯Ό μ°Ύλλ€.
- μ°Ύμ λ λ£¨νΈ λ Έλλ₯Ό λΉκ΅νλ€
- λ μ§ν©μ 루νΈλ Έλλ₯Ό κ°κ²νμ¬ ν©μΉλ€. 루νΈλ Έλλ μ΄λ€ 루νΈλ Έλν΄λ μκ΄μλ€.
Union μ°μ° λΉμ©λ¬Έμ -> λν¬
- νμ¬ λ Έλ κΈ°μ€μΌλ‘ κ°μ₯ κΉμ λ ΈλκΉμ§μ κ²½λ‘ κΈΈμ΄
- λ λ Έλμ 루νΈλ Έλ ꡬνκΈ°
- κ° λ£¨νΈλ
Έλμ λν¬ λΉκ΅
- λν¬κ°μ΄ λ€λ₯΄λ©΄ ν° λ Έλ κΈ°μ€ -> λν¬κ° ν° λ£¨νΈλ Έλλ₯Ό λν¬κ° μμ 루ν λλμ λΆλͺ¨λ Έλλ‘ λ³κ²½
- λν¬κ°μ΄ κ°μΌλ©΄ μ무거λ μ ν
μνΈλ°°νμ μ§ν© ννμν΄μ νμν μ°μ°
- find(parents,x): xκ° μν μ§ν©μ λνμμ μ°ΎκΈ°
- xμ λΆλͺ¨κ° μκΈ°μμ μ΄λ©΄, μ¦ xκ° λ£¨νΈλ Έλμ΄λ©΄ 루νΈλ Έλλ xμ΄κ³
- κ·Έλ μ§ μλ€λ©΄, λΆλͺ¨μ 루νΈλ Έλκ° λμ¬ λκΉμ§ μ¬κ·
- union(parents,x,y): x,yκ° μν λ μ§ν©μ ν©μΉλ€.
- xκ° μν μ§ν©μ 루νΈλ Έλμ yκ° μν 루νΈλ Έλ μ°ΎκΈ°
- yκ° μν μ§ν©μ xκ° μν μ§ν©μ ν©μΉλ€.
λ¬Έμ
ν°μΌλͺ¬
https://school.programmers.co.kr/learn/courses/30/lessons/1845
def solution(nums):
answer = 0
k= len(nums)//2
return min(len(set(nums)),k)
μμ΄ λλ§μκΈ°
https://school.programmers.co.kr/learn/courses/30/lessons/12981
def solution(n, words):
answer = []
'''
νλ½κΈ°μ€
1) κΈμμ 맨μκ³Ό λ€μ κΈμμ 맨λ€λ₯Ό λΉκ΅ν΄μ λ€λ₯΄λ©΄ νλ½
2) μ΄μ μ λ±μ₯νμΌλ©΄ νλ½ -> μ§ν©μ λ§λ€κ³ , λ§νλ λ¨μ΄κ° μ§ν©μ μλμ§λ₯Ό ꡬλ³νλ©΄ λ¨
'''
lens=len(words)
acc=words[0][0]
sets=set()
for i,word in enumerate(words):
if word[0]!=acc or word in sets:
return [(i%n)+1,(i//n)+1]
acc=word[-1]
sets.add(word)
return [0,0]
μ νλ²νΈ λͺ©λ‘
https://school.programmers.co.kr/learn/courses/30/lessons/42577
def solution(phone_book):
answer = True
'''
1. μ€λ¦μ°¨μμΌλ‘ μ λ ¬
2. μ λμ¬ = startswitλ‘ μκΈ° κΈ°μ€ λ°λ‘ λ€λ§ λΉκ΅
'''
phone_book.sort()
for i in range(len(phone_book)-1):
if phone_book[i+1].startswith(phone_book[i]):
return False
return True