반응형 Algorithm283 [Python][이코테] 음료수 얼려 먹기 배경 N x M 크기의 얼음 틀이 있다. 구멍이 뚫려 있는 부분은 0, 칸막이가 존재하는 부분은 1로 표시된다. 구멍이 뚫려 있는 부분끼리 상, 하, 좌, 우로 붙어 있는 경우 서로 연결되어 있는 것으로 간주한다. 이때 얼음 틀의 모양이 주어졌을 때 생성되는 총 아이스크림의 개수를 구하는 프로그램을 작성하시오 4 5 00110 00011 11111 00000 답) 3 입력 조건 첫 번째 줄에 얼음 틀의 세로 길이 N과 가로 길이 M이 주어진다. (1 ≤ N, M ≤ 1000) 두 번째 줄부터 N + 1번째 줄까지 얼음 틀의 형태가 주어진다. 이때 구멍이 뚫려있는 부분은 0, 그렇지 않은 부분은 1이다. 출력 조건 한 번에 만들 수 있는 아이스크림의 개수를 출력한다. 문제 해설 이 문제는 DFS로 해결할 .. 2022. 8. 2. [Python][이코테] BFS BFS BFS - Breadth First Search 너비 우선 탐색 알고리즘이다. 즉 가까운 노드부터 탐색하는 알고리즘이라고 할 수 있다. BFS는 선입선출 방식인 '큐' 방식을 주로 이용한다. 인접한 노드를 반복적으로 큐에 넣도록 알고리즘을 작성하면 자연스럽게 먼저 들어온 것이 나가게 되어, 가까운 노드부터 탐색을 진행하게 된다. 동작 방식은 다음과 같다. 탐색 시작 노드를 큐에 삽입하고 방문 처리를 한다. 큐에서 노드를 꺼내 해당 노드의 인접 노드 중에서 방문하지 않은 노드를 모두 큐에 삽입하고 방문 처리를 한다. 2번 과정을 더이상 수행할 수 없을 때까지 반복한다. 1. 시작 노드인 1을 큐에 삽입하고 방문처리한다. 1 2. 큐에서 노드 1을 꺼내고 방문하지 않은 인접노드 2, 3, 8을 모두 .. 2022. 8. 2. [Python][이코테] DFS DFS DFS는 Depth-First Search 깊이 우선 탐색이라고 한다. DFS는 왼쪽에 해당하는 이미지로 먼저 갈수있는 최대한으로 읽고 그다음 옆의 노드를 읽는 것이다. 위의 경우 A B D E F C G H I J 순이 된다. DFS에서는 표현 하는 방식이 두 가지가 있다. 인접 행렬(Adjacency Matrix): 2차원 배열로 그래프의 연결 관계를 표현하는 방식 인접 리스트(Adjacency List): 리스트로 그래프의 연결 관계를 표현하는 방식 위는 인접 행렬의 예시이다. 각 노드를 축에놓고 노드 간의 거리를 표에 값으로 표시한다. 이를 코드로 구현하면 # 5-6 DFS,BFS DFS INF = 999999999 graph = [ [0, 7, 5], [7, 0, INF], [5, INF.. 2022. 8. 1. [Python][이코테] 재귀함수/팩토리얼재귀 재귀함수 자기 자신을 호출하는 함수이다. 말이 어렵다 직접 코드로 보자 # 5-3 DFS,BFS 재귀 함수 def recursive_function(): print("재귀 함수를 호출합니다.") recursive_function() recursive_function() #RecursionError: maximum recursion depth exceeded while calling a Python object recursive_function() 함수 안에서 recursive_function() 함수를 호출한다. 뭐 이런 거다. 함수가 함수 본인을 호출하여 다시 함수를 실행하는 것이다. 이후 해당 함수가 종료되면 가장 마지막으로 종료된 시점의 함수의 다음 행부터 명령어를 시작한다. 하지만 위의 코드를 실.. 2022. 7. 20. 이전 1 ··· 65 66 67 68 69 70 71 다음 반응형