์งํฉ์ด๋?
- ๊ฐ๋ : ์์์ ์ค๋ณต์ด ์๋ ์์๋ค์ ๊ฐ๋ ์๋ฃ๊ตฌ์กฐ
- ์ข
๋ฅ: ์ ํ ์งํฉ, ๋ฌดํ ์งํฉ ๋ฑ, ์ค์ํ ๊ฒ์ ์ํธ๋ฐฐํ์ ์งํฉ
- ์ํธ๋ฐฐํ์ ์งํฉ: ๊ต์งํฉ์ด ์๋ ์งํฉ ๊ด๊ณ
- ์ด๋ฅผ ํ์ฉํ์ฌ ์ด๋ฏธ์ง ๋ถํ , ์ต์ ์ ์ฅํธ๋ฆฌ ์๊ณ ๋ฆฌ์ฆ ๊ตฌํ, ํด๋ฌ์คํฐ๋ง ์์ ๋ฑ์ด ๊ฐ๋ฅํ๋ค.
- ์ํธ๋ฐฐํ์ ์งํฉ: ๊ต์งํฉ์ด ์๋ ์งํฉ ๊ด๊ณ
์งํฉ์ ์ฐ์ฐ
๋ฐฐ์ด์ ํ์ฉํ ํธ๋ฆฌ๋ก ํํ
- ๋ํ ์์: ์งํฉ์ ๋ํํ๋ ์์ -> ๋ฃจํธ ๋ ธ๋๋ฅผ ์๊ฐํ์
- ํ๋์ ๋ฐฐ์ด๋ก ์ํธ ๋ฐฐํ์ ๊ด๊ณ๋ฅผ ๊ฐ์ง๋ ์งํฉ์ ๋ชจ๋ ํํํ๋ค. ์งํฉ์ ํธ๋ฆฌ๋ก ๋ณ๊ฒฝ ์ "๋ฐฐ์ด์ ๊ฐ=์ธ๋ฑ์ค์ ๋ถ๋ชจ๋ ธ๋"
- 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
'๐ฏ ์๊ณ ๋ฆฌ์ฆ > ์๊ณ ๋ฆฌ์ฆ ์ ๋ฆฌ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํธ๋ฆฌ (0) | 2024.10.04 |
---|---|
ํด์ (3) | 2024.10.03 |
ํ (1) | 2024.10.03 |
์คํ (0) | 2024.09.10 |
๋ฐฐ์ด (1) | 2024.09.09 |