DFS/BFS - 음료수 얼려 먹기, 미로탈출
음료수 얼려먹기 def dfs(x, y): if x = n or y = m: return False if graph[x][y] == 0: graph[x][y] = 1 dfs(x-1, y) #True or False dfs(x, y-1) dfs(x+1, y) dfs(x, y+1) return True return False n, m = map(int, input().split()) graph = [] for i in range(n): graph.append(list(map(int, input()))) result = 0 for i in range(n): for j in range(m): if dfs(i, j) == True: result += 1 print(result) DFS를 재귀적으로 나타냈다. 기초..
2024. 3. 7.
삽입 정렬
삽입정렬 처리되지 않은 데이터를 하나씩 골라 적절한 위치에 삽입 데이터를 하나씩 확인하면서, 이 데이터는 어느 위치에 들어가는게 맞을 지 매번 계산해서 적절한 위치에 들어갈 수 있도록 해줌 선택 정렬에 비해 구현 난이도가 높지만, 더 빠르게 동작 앞쪽에 있는 원소들이 이미 정렬되어있다고 가정하고, 뒤 쪽에 있는 원소를 앞 쪽에 있는 원소의 위치 중에서 한 곳으로 들어가도록 만드는 방식으로 동작 처음 시작 시, 첫 번째 원소는 그 자체로 정렬되어 있다고 판단하고 두 번째 데이터가 어떤 위치로 들어갈지 판단. 카드 게임을 할 때, 새로운 카드가 들어오면 새로운 카드를 기존 정렬된 카드 사이 올바른 자리를 찾아 삽입함으로써 정렬이 유지되도록 하는 것과 같음. array = [7,5,9,0,3,1,6,2,4,8..
2023. 12. 18.
선택 정렬
정렬(sorting) : 데이터를 특정한 기준에 따라 순서대로 나열하는 것 일반적으로 문제 상황에 따라 적절한 정렬 알고리즘이 공식처럼 사용된다. 선택 정렬 처리되지 않은 데이터 중에서 가장 작은 데이터를 선택해 맨 앞에 있는 데이터와 바꾸는 것을 반복 매번 가장 작은 것을 선택한다는 의미에서 '선택'정렬 알고리즘이라고 한다. array = [7,5,9,0,3,1,6,2,4,8] for i in range(len(array)): min_index = i # 가장 작은 원소의 인덱스. 맨 처음 시작은 0번째 인덱스로 for j in range(i+1, len(array)): # 처리되지 않은 데이터에서 if array[min_index] > array[j]: min_index = j array[i], ar..
2023. 12. 17.