반응형 Algorithm/이것이 코딩테스트다34 [Python][이코테] 미로 탈출 문제 동빈이는 N X M 크기의 직사각형 형태의 미로에 갇혀 있다. 미로에는 여러 마리의 괴물이 있어 이를 피해 탈출해야 한다. 동빈이의 위치는 (1, 1)이고 미로의 출구는 (N, M)의 위치에 존재하며 한 번에 한 칸씩 이동할 수 있다. 이때 괴물이 있는 부분은 0으로, 괴물이 없는 부분은 1로 표시되어 있다. 미로는 반드시 탈출할 수 있는 형태로 제시된다. 이때 동빈이가 탈출하기 위해 움직여야 하는 최소 칸의 개수를 구하시오. 칸을 셀 때는 시작 칸과 마지막 칸을 모두 포함해서 계산한다. 입력 조건 첫째 줄에 두 정수 N, M (4 ≤ N,M ≤ 200)이 주어집니다. 다음 N개의 줄에는 각각 M개의 정수(0 또는 1)로 미로의 정보가 주어진다. 각각의 수들은 공백 없이 붙어서 입력으로 제시된다. .. 2022. 8. 5. [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. 이전 1 ··· 3 4 5 6 7 8 9 다음 반응형