์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- pandas
- ๋น ๋ฐ์ดํฐ๋ถ์๊ธฐ์ฌ
- ๋น ๋ฐ์ดํฐ
- ๋์ํ๋ณธ
- ์ค๋ฒ์ํ๋ง
- dataframe
- LDA
- ๋ฐ์ดํฐ๋ถ์์ ๋ฌธ๊ฐ
- iloc
- Python
- ์๋ํด๋ผ์ฐ๋
- ๋ฐ์ดํฐ๋ถ๊ท ํ
- Lambda
- ADP
- ADsP
- ์ธ๋์ํ๋ง
- ํฌ๋กค๋ง
- t-test
- DBSCAN
- ์ฃผ์ฑ๋ถ๋ถ์
- ํ์ด์ฌ
- ๋ฐ์ดํฐ๋ถ์
- opencv
- ํ ์คํธ๋ถ์
- ๊ตฐ์งํ
- PCA
- ๋ ๋ฆฝํ๋ณธ
- ๋ฐ์ดํฐ๋ถ์์ค์ ๋ฌธ๊ฐ
- numpy
- datascience
Data Science LAB
[Python] ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ฉํ ์คํธ ์ฐ์ต level3 (๋คํธ์ํฌ) ๋ณธ๋ฌธ
[Python] ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ฉํ ์คํธ ์ฐ์ต level3 (๋คํธ์ํฌ)
ใ ใ ใ ใ 2023. 1. 22. 15:331. ๋ฌธ์ ์ค๋ช
๋คํธ์ํฌ๋ ์ปดํจํฐ ์ํธ ๊ฐ์ ์ ๋ณด๋ฅผ ๊ตํํ ์ ์๋๋ก ์ฐ๊ฒฐ๋ ํํ๋ฅผ ์๋ฏธํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ปดํจํฐ A์ ์ปดํจํฐ B๊ฐ ์ง์ ์ ์ผ๋ก ์ฐ๊ฒฐ๋์ด์๊ณ , ์ปดํจํฐ B์ ์ปดํจํฐ C๊ฐ ์ง์ ์ ์ผ๋ก ์ฐ๊ฒฐ๋์ด ์์ ๋ ์ปดํจํฐ A์ ์ปดํจํฐ C๋ ๊ฐ์ ์ ์ผ๋ก ์ฐ๊ฒฐ๋์ด ์ ๋ณด๋ฅผ ๊ตํํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ปดํจํฐ A, B, C๋ ๋ชจ๋ ๊ฐ์ ๋คํธ์ํฌ ์์ ์๋ค๊ณ ํ ์ ์์ต๋๋ค.
์ปดํจํฐ์ ๊ฐ์ n, ์ฐ๊ฒฐ์ ๋ํ ์ ๋ณด๊ฐ ๋ด๊ธด 2์ฐจ์ ๋ฐฐ์ด computers๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ๋คํธ์ํฌ์ ๊ฐ์๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํ์์ค.
2. ์ ํ์ฌํญ
- ์ปดํจํฐ์ ๊ฐ์ n์ 1 ์ด์ 200 ์ดํ์ธ ์์ฐ์์ ๋๋ค.
- ๊ฐ ์ปดํจํฐ๋ 0๋ถํฐ n-1์ธ ์ ์๋ก ํํํฉ๋๋ค.
- i๋ฒ ์ปดํจํฐ์ j๋ฒ ์ปดํจํฐ๊ฐ ์ฐ๊ฒฐ๋์ด ์์ผ๋ฉด computers[i][j]๋ฅผ 1๋ก ํํํฉ๋๋ค.
- computer[i][i]๋ ํญ์ 1์ ๋๋ค.
3. ๋ด ํ์ด
from collections import deque
def bfs(computers, start, visited):
queue = deque([start])
visited[start] = True
cnt = 0
while queue:
v = queue.popleft()
for i in range(len(computers[v])):
if i != v and not visited[i] and computers[v][i] == 1:
queue.append(i)
cnt += 1
visited[i] = True
return cnt
def solution(n, computers):
answer = n
visited = [False] * n
for x in range(n):
if not visited[x]:
answer -= bfs(computers,x,visited)
return answer
1. bfs ํจ์๋ฅผ ์ ์ธํ์ฌ ๊ฐ ๋คํธ์ํฌ๋ณ๋ก ์ฐ๊ฒฐ๋์ด ์๋ ์ปดํจํฐ countํ์ฌ cnt๋ก return
2. n์์ ์ฐ๊ฒฐ๋์ด์ ธ ์๋ ์ปดํจํฐ ์๋ฅผ ๋นผ์ ๊ฒฐ๊ณผ return
4. ๋ค๋ฅธ ์ฌ๋ ํ์ด
def solution(n, computers):
answer = 0
visited = [0 for i in range(n)]
def dfs(computers, visited, start):
stack = [start]
while stack:
j = stack.pop()
if visited[j] == 0:
visited[j] = 1
# for i in range(len(computers)-1, -1, -1):
for i in range(0, len(computers)):
if computers[j][i] ==1 and visited[i] == 0:
stack.append(i)
i=0
while 0 in visited:
if visited[i] ==0:
dfs(computers, visited, i)
answer +=1
i+=1
return answer
def solution(n, computers):
temp = []
for i in range(n):
temp.append(i)
for i in range(n):
for j in range(n):
if computers[i][j]:
for k in range(n):
if temp[k] == temp[i]:
temp[k] = temp[j]
return len(set(temp))