본문 바로가기

Algorithm8

[Problem Solving] 음료수 얼려 먹기 이번에는 DFS와 BFS의 개념을 활용해 풀어야 하는 문제인 "음료수 얼려 먹기" 알고리즘 문제를 풀어보겠습니다. 문제 : N x M 크기의 얼음 틀이 있다. 구멍이 뚫려 있는 부분은 0, 칸막이가 존재하는 부분은 1로 표시된다. 구멍이 뚫려 있는 부분끼리 상, 하, 좌, 우로 붙어 있는 경우 서로 연결되어 있는 것으로 간주한다. 이때 얼음 틀의 모양이 주어졌을 때 생성되는 총아이스크림의 개수를 구하는 프로그램을 작성하시오. 첫 번째 줄에 얼음 틀의 세로 길이 N과 가로길이 M이 주어진다. (1 2021. 2. 4.
[Algorithm] BFS 이번에도 마찬가지로 탐색 알고리즘 중 하나인 BFS에 대하여 공부해 보았습니다. BFS란 Breadth First Search의 줄임말로 '너비 우선 탐색' 즉, 가까운 노드부터 탐색하는 알고리즘입니다. DFS에서는 최대한 멀리 있는 깊은 노드를 우선적으로 탐색하였다면 BFS는 반대로 가까운 노드부터 탐색합니다. BFS를 구현할 때에는 Stack, 재귀 함수를 이용하는 것이 아니라 선입선출 방식인 큐 자료구조를 이용합니다. DFS에 다루었던 동일한 그래프로 BFS를 만들어 보겠습니다. DFS에서 썼던 그래프와 동일하므로 각 노드가 연결된 정보가 같습니다. 여기서 중요한 것은 DFS에서는 후입 선출 LIFO(Last In First Out) 였다면, BFS에서는 FIFO(First In First Out).. 2021. 2. 3.
[Algorithm] DFS 이번에는 탐색 알고리즘 DFS에 대하여 공부해 보았습니다. DFS와 BFS를 공부하기 전에 스택과 큐, 재귀 함수에 대한 간단한 개념 정도는 알고 있는 것이 좋다. 그렇다면 DFS란 무엇일까? DFS란 Depth-First Search의 줄임말로 깊이 우선 탐색 즉, 그래프에서 깊은 부분을 우선적으로 탐색하는 알고리즘이다. 그래프 탐색은 하나의 노드를 시작으로 다수의 노드를 방문하는 것이다. 그래프 표현방식에는 크게 2가지로 인접 행렬(Adjacency Matrix)와 인접 리스트(Adjacency List)가 있다. 인접 행렬(Adjacency Matrix) 인접 리스트(Adjacency List) 2차원 배열로 그래프의 연결 관계를 표현하는 방식 리스트로 그래프의 연결 관계를 표현하는 방식 위의 그래.. 2021. 2. 3.
[Problem Solving] 게임 개발 문제 : 게임 개발 현민이는 게임 캐릭터가 맵 안에서 움직이는 시스템을 개발 중이다. 캐릭터가 있는 장소는 1 x 1 크기의 정사각형으로 이뤄진 N x M 크기의 직사각형으로, 각각의 칸은 육지 또는 바다이다. 캐릭터느 동서남북 중 한곳을 바라본다. 맵의 각 칸은 (A, B)로 나타낼 수 있고, A는 북쪽으로부터 떨어진 칸의 개수, B는 서쪽으로부터 떨어진 칸의 개수이다. 캐릭터는 상하좌우로 움직일 수 있고, 바다로 되어 있는 공간에는 갈 수 없다. 캐릭터의 움직임을 설정하기 위해 정해 놓은 매뉴얼은 이러하다. 1. 현재 위치에서 현재 방향을 기준으로 왼쪽 방향(반시계 방향으로 90도 회전한 방향)부터 차례대로 갈 곳을 정한다. 2. 캐릭터의 바로 왼쪽 방향에 아직 가보지 않은 칸이 존재한다면, 왼쪽 방.. 2021. 2. 2.