알고리즘

    프로그래머스 : 네트워크

    프로그래머스 : 네트워크

    programmers.co.kr/learn/courses/30/lessons/43162 코딩테스트 연습 - 네트워크 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있 programmers.co.kr 유니온 파인드로도, dfs로도 풀 수 있는 문제다. 필자는 유니온 파인드를 시도했다가 못풀고 dfs로 풀었다. dfs를 하기 위한 방법 중 하나는 재귀함수를 쓰는 것이다. 이번엔 재귀에 대해서 좀 더 생각해보자. 재귀는 참 공부를 해도 헷갈리는 녀석이다. 그래서 이참에 마무리를 지어버리려고 한다. 내가 생각한 재귀는 '분신을 만들고 일을 시키는 것' 이다. A라는 함수는..

    프로그래머스 : 여행경로

    프로그래머스 : 여행경로

    코딩테스트 연습 - 여행경로 [[ICN, SFO], [ICN, ATL], [SFO, ATL], [ATL, ICN], [ATL,SFO]] [ICN, ATL, ICN, SFO, ATL, SFO] programmers.co.kr 조건 1. 모든 도시를 거친다. 조건 2. 티켓을 다 쓴다. (answer.length == tickets.length + 1) 이 문제는 깊이탐색으로 풀 수 있는 문제다. 깊이탐색의 개념에 대해서 잘 모르면, 왜 깊이탐색을 써야하는지 이해가 안갈 수 있다. 그래프의 탐색방법은 기본적으로 너비탐색과 깊이탐색이있다. 너비탐색은 마치 개미굴에 물을 붓듯이 처음부터 모든 경우의 수를 탐색하므로 이 문제에는 적절치 않다. 그보다는 깊이탐색처럼 한 깊이로 끝까지 갔다가, 막다른 길이면 분기점까..