-
프로그래머스 네트워크(LV3)알고리즘 2020. 7. 25. 02:40
200721 기상 : 6시? 다시 자서 12시 ㅋ..
다 이전 스터디 때 했던 거
☝🏻문제 설명
네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어 있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있을 때 컴퓨터 A와 컴퓨터 C도 간접적으로 연결되어 정보를 교환할 수 있습니다. 따라서 컴퓨터 A, B, C는 모두 같은 네트워크 상에 있다고 할 수 있습니다.
컴퓨터의 개수 n, 연결에 대한 정보가 담긴 2차원 배열 computers가 매개변수로 주어질 때, 네트워크의 개수를 return 하도록 solution 함수를 작성하시오.
제한사항
컴퓨터의 개수 n은 1 이상 200 이하인 자연수입니다. 각 컴퓨터는 0부터 n-1인 정수로 표현합니다.
i 번 컴퓨터와 j 번 컴퓨터가 연결되어 있으면 computers[i][j]를 1로 표현합니다. computer[i][i]는 항상 1입니다.
입출력 예
n
computers
return
3
[[1, 1, 0], [1, 1, 0], [0, 0, 1]]
2
3
[[1, 1, 0], [1, 1, 1], [0, 1, 1]]
1
⛏ 첫 번째
몰라서 인터넷 ㅋ
def dfs(computers, visited, start): record = [start] while record: j = record.pop() if visited[j] == 0: # 방문하고 체크하고있으니까 1로 변경 visited[j] = 1 # 컴퓨터 수만큼 반복문 돌림. for i in range(len(computers)): # 연결되어 있는 경우 + 방문하지 않았을 경우 if computers[j][i] ==1 and visited[i] == 0: record.append(i) # 추가해서 계산 def solution(n, computers): answer = 0 # 방문기록 컴퓨터 수만큼 0으로 초기화(방문X) visited = [0]*n start = 0 # 방문하지 않은 경우가 있을 경우, 반복문 들어감(계산) while 0 in visited: if visited[start] ==0: dfs(computers, visited, start) answer +=1 # 방문 했을 경우 이제 다음 index로 이동. start+=1 return answer
🤷♂️
이해 안 되면 막 씀
bfs dfs 전혀 모르겠음
그래서 언니한테 물어봤는데
알고리즘 스터디 따로 하면서
그 bfs dfs 각각 일주일에 6개씩 3달 하니까 이제는 모든 bfs dfs 풀 수 있다더라
참 좋은 조언이었다.
느낀 점
오늘 내가 너무 싫었다
난 봐도 전혀 모르겠는데
친구는 문제들을 읽자마자 어떤 식으로 바로 아는게
부러웠고 그냥 내가 너무 노간지
친구는 잘못한 게 없는데 미워지는 나 자신이 너무 싫고
그 친구가 이미 나보다 많이 풀고 공부했으니까 당연히 그렇다고 생각해도
쉽게 사라지지 않는 생각에 내가 너무 싫었고 미안했다
노간지 ㄹㅇ
열심히 해야지😀
'알고리즘' 카테고리의 다른 글
프로그래머스 [1차] 비밀지도(Python) (0) 2020.08.06 프로그래머스 [1차] 다트 게임 (0) 2020.08.06 프로그래머스 다리를 지나는 트럭(LV 1) (0) 2020.07.25 프로그래머스 예산(LV3) (0) 2020.07.25 프로그래머스 입국심사(Python) (0) 2020.07.25