본문 바로가기

알고리즘 (2020 : 08 : 10 ~ )

(260)
[백준 / BOJ] 2233 사과나무 문제 출처 : www.acmicpc.net/problem/2233 2233번: 사과나무 문제 사과나무는 나무(tree)의 일종으로, 각각의 정점에 정확히 한 개의 사과가 있고, 모든 내부 정점(자식이 있는 정점)이 최소 두 개의 자식을 갖는 나무이다. 예를 들면 아래의 그림은 사과나무 www.acmicpc.net 정점의 개수와 벌레가 만드는 이진수를 입력받고, 정상적인나무를 최소화한상태로 썩은나무를 모두 없애는 정점을 구하는 문제다. 풀이 그래프 구조를 만들필요없이 해당노드의 등장 순서만 알고있다면 풀리는 문제다. 입력을 보면, 벌레가 만드는 이진수가 깊이우선탐색의 순서와동일한것을 알수있다. (해당 노드에서 끝까지 간후 더이상 갈수없을경우, 부모로 올라감) -이진수에 따라 자식과 부모관계를 만들어주기위해..
[백준 / BOJ] 3190 뱀 문제 출처 : www.acmicpc.net/problem/3190 3190번: 뱀 문제 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. www.acmicpc.net N*N보드에서 뱀이 이동한다. 이때, 먼저 뱀의 머리를 움직인다. 뱀의 머리가 도착한 위치에 사과가 있다면, 꼬리는 그대로 있고 머리만 움직인다.(뱀의 몸의 길이가 한칸 늘어남) 아니라면, 몸의 길이를 줄여 꼬리가 위치한 칸을 비워준다. 풀이 처음에 문제 조건을 잘 읽지 않고 풀어서 힘들었다. 먼저 뱀의 몸길이를 늘려 머리를 다음칸에 위치시킨다.
[백준 / BOJ] 12100 2048 (Easy) 문제 출처 : www.acmicpc.net/problem/12100 12100번: 2048 (Easy) 첫째 줄에 보드의 크기 N (1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 게임판의 초기 상태가 주어진다. 0은 빈 칸을 나타내며, 이외의 값은 모두 블록을 나타낸다. 블록에 쓰여 있는 수는 2 www.acmicpc.net N * N 판이 주어졌을때, 최대 5번 합치면서 움직이며, 만들수있는 가장 큰 블록을 구하는 게임이다. 풀이 구현문제였다. - 3차원 temp배열을 만든다. (temp[i][j][cnt]) 이는 cnt번 움직였을때, i,j의 상태를 뜻한다. (연산 최소화) - check 배열을 만든다. cnt번 움직였을때, 최댓값이 check[cnt]에 저장된 값보다 작을경우, 리턴해..
[백준 / BOJ] 1027 고층건물 문제 출처 : www.acmicpc.net/problem/1027 1027번: 고층 건물 세준시에는 고층 빌딩이 많다. 세준시의 서민 김지민은 가장 많은 고층 빌딩이 보이는 고층 빌딩을 찾으려고 한다. 빌딩은 총 N개가 있는데, 빌딩은 선분으로 나타낸다. i번째 빌딩 (1부터 시작)�� www.acmicpc.net 세준시에는 고층 빌딩이 많다. 세준시의 서민 김지민은 가장 많은 고층 빌딩이 보이는 고층 빌딩을 찾으려고 한다. 빌딩은 총 N개가 있는데, 빌딩은 선분으로 나타낸다. i번째 빌딩 (1부터 시작)은 (i,0)부터 (i,높이)의 선분으로 나타낼 수 있다. 고층 빌딩 A에서 다른 고층 빌딩 B가 볼 수 있는 빌딩이 되려면, 두 지붕을 잇는 선분이 A와 B를 제외한 다른 고층 빌딩을 지나거나 접하지 ..