아카이브: 2018/1

0

백준 12100 2048 easy

백준 2048 문제는 2048 게임을 간단하게 시뮬레이션 해보는 문제이다. -> 왼쪽, 오른쪽, 위, 아래의 방향으로 움직였을 경우 숫자들이 합쳐지는 것만 구현한다면 dfs로 그리 어렵지 않게 풀 수 있는 문제이다. 단순히 생각대로 위, 아래, 오른쪽, 왼쪽 함수를 모두 만들어 풀어 코드가 지저분하고 긴 감이 없지 않아 있다. 123456789101

0

백준 13459 째로탈출

백준 째로 탈출은 10번이라는 횟수의 제한 안에 파란 구슬을 빼지 않으면서 빨간 구슬을 뺄 수 있는지 시뮬레이션을 해보는 문제이다. bfs를 통해서 현재 빨간 구슬, 파란구슬의 위치에 대해 상,하, 좌,우 움직인 좌표가 어디인지를 확인해 나가면 풀 수 있는 문제이다. 생각보다 구현도 짜증나고 상,하,좌,우 움직였을 때 일단 한쪽으로 구슬을 몰아 넣은 다

0

백준 3190 뱀

백준 3190 뱀은 도스 뱀 게임을 구현하는 문제이다. n*n의 맵이 있다고 가정하고 0,0의 배열의 위치에서 뱀이 시작했을 때 과연 뱀이 몇초후에 죽는지 출력하는 문제이다. 방향 전환 정보와 사과의 위치 정보가 주어지게 되는데 이 뱀을 잘 구현하기 위해서는 list 자료구조를 이용하면 쉽게 구현이 가능하다. list를 통해서 head와 tail에

0

백준 14500 테트로미노

백준 테트로미노는 n * m 배열에 적혀 있는 숫자에 도형을 넣은뒤 도형이 놓여지는 숫자들의 합이 최대로 되게 하는 문제이다. 이 문제는 단순히 도형 하나씩을 넣어보면 되기 때문에 빈틈없이 꽉 채우는 타일링 문제보다 쉬운 것 같다. 먼저 0,0을 기준으로 도형의 상대적인 좌표들로 5개의 도형을 표현 한뒤, rotate, 대칭한 도형들에 대하여 모든 좌

0

백준 5427 불

백준 5427 불은 전형적인 BFS 문제이다. 처음 시작 위치가 주어지고 불이 번질 때 지정된 위치로 탈출 할 수 있는가를 판단하는 문제이다. 사람의 위치를 퍼지게 하기 위한 queue와 불이 퍼지게 하기 위한 위치를 담긴 queue인 2개의 queue를 이용하여 시뮬레이션 하였다. 사실 생각해보니까 queue를 따로 두지 않고 사람, 불에 대한 타입을

0

백준 1700 멀티탭 스케줄링

분류는 그리디 알고리즘이며, 문제 해결 절차는 이렇습니다. 1. 내가 사용할 아이템(장비???)가 꽂혀있는지 확인합니다. 2. 1에서 꽂혀있으면 다음 장비로 넘어갑니다. 3. 1에서 꽂혀있지 않으면 비어있는 포트가 있는지 확인한다. 4. 3에서 빈 포트가 있으면 그냥 꽂는다. 5. 3에서 빈 포트가 없으면 현재 꽂혀 있는 아이템 중에 나중에 가장 늦게 사용

0

백준 2250 트리의 높이와 너비

백준 2250 트리의 높이와 너비는 트리의 노드에 번호를 붙이고, 같은 레벨에 있는 최대 노드 번호 - 최소노드 번호 +1의 값이 가장 큰 즉 너비가 가장 넓은 레벨과 너비의 값을 출력하는 문제이다. 이 과정에서 트리의 번호를 어떻게 매기는가는 문제의 그림을 보면 쉽게 알 수 있다. 위에서 2번 번호를 가진 노드를 보자. 2번을 기준으로 번호를 매길

0

백준 5525 IOIOI

백준 5525 IOI는 I와 O로 이루어진 문자열에서 연속적으로 IOI로 이어진 문자 Pn이 몇개 있는지 그 개수를 세는 문제이다. 위 문제에서와 같이 P1은 IOI P2는 IOIOI와 같이 IOI가 연속적으로 붙어 있는 문자로 존재하게 된다. 여기서 N이라는 숫자가 주어지게 되는데 Pn을 만족하는 문자열이 몇군데 존재하는지 찾는 문제이다. 이 문제는

0

허프만 코드 알고리즘

####기본 개념 허프만 코드는 압축에서 기본적으로 쓰이는 개념으로 자주 쓰이는 문자열에 대해 적은 비트를 할당하여 문자를 압축하는 알고리즘이다. -> 예를 들어 “AABBABAAACDEKSPEQAAA” 라는 문자열이 있을 때 여기서 사용되는 A라는 문자열은 가장 많이 쓰이므로 이를 압축할 때 가장 적은 비트수를 가지는 0과 같은 비트로 매칭하여

0

하노이탑 알고리즘

하노이탑은 널리 알려져 있는 문제로 3개의 막대가 있고 첫번째 막대에 있는 모든 원판을 3번째 원판으로 최소의 횟수로 이동시키는 문제이다. 이 문제는 알고리즘의 재귀의 대표적 문제로 알려져 있으며 처음 이 방법을 모르면 매우 어려울 수 있으나 개념적 원리를 알고 알고리즘을 구현하면 생각보다 의외로 간단하고 깔끔한 코드가 나오는 문제이다. 원리는 간단한