Algorithm
-
[DFS/BFS] 문제이름 : 음료수 얼려 먹기Algorithm/유형별 문제 풀기 2021. 7. 5. 11:59
문제 설명 N X M 크기의 얼음 틀이 있다. 구멍이 뚫린 부분은 0, 칸막이가 존재하는 부분은 1로 표시된다. 구멍이 뚫려 있는 부분끼리 상 하 좌 우로 붙어 있는 경우 서로 연결되어 있는 것으로 간주한다. 이때 얼음 틀의 모양이 주어졌을 때 생성되는 총 아이스크림의 개수를 구하는 프로그램을 작성하시오. 1. 사용 알고리즘 그래프 탐색 - BFS & DFS 2. 문제 해결 아이디어 주어진 좌표의 위치와 해당 위치의 상하좌우에 대해 구멍이 뚫려서 연결되어 있는지 탐색하면 된다. 이때 주어진 2차원 배열을 그래프 형태로 생각하면, DFS와 BFS 알고리즘을 적용해 해결할 수 있다. 3. 코드 구현방식1) BFS(너비 우선 탐색)를 사용해 가까운 좌표부터 확인하기 각 좌표가 상하좌우에 대해 움직일 수 있는 ..
-
[DFS/BFS] 개념정리2 - 그래프, 인접행렬, 인접리스트Algorithm/개념정리 2021. 7. 4. 11:56
그래프 노드(Node)와 간선(Edge)으로 표현되며 이때 노드를 정점(Vertex)라고도 함 두 노드가 간선으로 연결되어 있다면, '두 노드는 인접하다(Adjacent)'라고 표현함 그래프 표현 방식(2가지) 1. 인접행렬(Adjacency Matrix) : 2차원 배열로 그래프의 연결 관계를 표현하는 방식 -> 2차원 배열에 각 노드가 연결된 형태를 기록하는 방식 /* * Adjacency Array(인접행렬) */ class ArrGraph{ private int[][] arrGraph; //2차원 배열 선언 //그래프 초기화 public ArrGraph(int graphSize) { //vertex가 1부터 시작할 때 this.arrGraph = new int[graphSize+1][graphSi..
-
[DFS/BFS] 개념정리1 - 탐색, 스택, 큐, 재귀함수Algorithm/개념정리 2021. 7. 1. 11:37
1. 탐색 많은 양의 데이터 중에서 원하는 데이터를 찾는 과정 프로그래밍에서는 그래프, 트리 등의 자료구조 안에서 탐색을 하는 문제를 자주 다룸 대표적 탐색 알고리즘 : BFS, DFS → 2가지 알고리즘의 원리를 제대로 이해해야 탐색 문제 유형을 풀 수 있음 → 2가지 알고리즘을 제대로 이해하려면 기본 자료구조인 스택과 큐에 대한 이해가 필요함 2. 자료구조 데이터를 표현하고 관리하고 처리하기 위한 구조 스택과 큐는 자료구조의 기초 개념으로 2가지 핵심적인 함수로 구성됨 + 언더플로우&오버플로우 삽입(push) : 데이터 삽입함 삭제(pop) : 데이터 삭제 2-1. 스택 in java Stack 클래스 List 컬랙션 클래스의 Vector 클래스를 상속받아, 스택 메모리 구조의 클래스를 제공함 스택 ..
-
[구현] 문제이름 : 게임 개발Algorithm/유형별 문제 풀기 2021. 6. 30. 12:20
문제 설명 게임 캐릭터가 맵 안에서 움직이는 시스템을 개발 중이다. 캐릭터가 있는 장소는 1 x 1 크기의 정사각형으로 이루어진 N x M 크기의 직사각형으로, 각각의 칸은 육지 또는 바다이다. 캐릭터는 동성남북 중 한 곳을 바라본다. 캐릭터는 상하좌우로 움직일 수 있고, 바다로 되어 있는 공간에는 갈 수 없다. 캐릭터의 움직임을 설정하기 위해 정해 놓은 메뉴얼은 다음과 같다. 1. 현재 위치에서 현재 방향을 기준으로 왼쪽 방향 부터 차례대로 갈 곳을 정한다. 2. 캐릭터의 바로 왼쪽 방향에 아직 가보지 않은 칸이 존재한다면, 왼쪽 방향으로 회전한 다음 왼쪽으로 한 칸 전진한다. 왼쪽 방향에 가보지 않은 칸이 없다면, 왼쪽 방향으로 회전만 수행하고 1단계로 돌아간다. 3 만약 네 방향 모두 이미 가본 칸..