https://www.acmicpc.net/problem/1937 1937번: 욕심쟁이 판다 n*n의 크기의 대나무 숲이 있다. 욕심쟁이 판다는 어떤 지역에서 대나무를 먹기 시작한다. 그리고 그 곳의 대나무를 다 먹어 치우면 상, 하, 좌, 우 중 한 곳으로 이동을 한다. 그리고 또 그곳에서 www.acmicpc.net 난이도 : 골드 3 DFS와 메모이제이션을 이용했습니다. 메모이제이션은 다이나믹 프로그래밍처럼 이전에 계산해 둔 값을 나중에 계속 이용하여 불필요한 계산을 줄일 수 있습니다. 이 문제에서 숲의 최대 크기는 500x500입니다. 메모이제이션을 이용하여 계산의 중복을 막아 시간 초과를 예방했습니다. 판다가 이동할 4방향의 칸을 DFS를 통해 계산해줬습니다. 그리고 4방향 중 최댓값에서 1을 ..
https://www.acmicpc.net/problem/1967 1967번: 트리의 지름 파일의 첫 번째 줄은 노드의 개수 n(1 ≤ n ≤ 10,000)이다. 둘째 줄부터 n-1개의 줄에 각 간선에 대한 정보가 들어온다. 간선에 대한 정보는 세 개의 정수로 이루어져 있다. 첫 번째 정수는 간선이 연 www.acmicpc.net 난이도 : 골드 4 가장 긴 지름을 만드는 노드 node1과 node2가 있다고 가정한다면, 임의의 노드 1개에서 가장 먼 노드는 node1이나 node2 일 것입니다. 여기서 긴 지름에 참여하는 노드 1개를 구하고 나머지 하나의 노드를 구하면 node1과 node2를 둘 다 구할 수 있습니다. 가장 먼 노드는 dfs로 구했습니다. https://www.acmicpc.net/p..
https://www.acmicpc.net/problem/1194 1194번: 달이 차오른다, 가자. 첫째 줄에 미로의 세로 크기 N과 가로 크기 M이 주어진다. (1 ≤ N, M ≤ 50) 둘째 줄부터 N개의 줄에 미로의 모양이 주어진다. 같은 타입의 열쇠가 여러 개 있을 수 있고, 문도 마찬가지이다. 그리고, www.acmicpc.net 난이도 : 골드 1 Set을 이용한 BFS로 문제를 풀다가 오류를 만났습니다. 도저히 방법이 없어 검색해보니 비트 마스킹으로 쉽게 풀 수 있는 문제였습니다. 방문 검사는 3차원 배열을 통해 진행합니다. a~f까지 6개의 열쇠가 있으므로 [N][M][111111]의 크기를 가집니다. 비트 연산을 통해 key를 저장하고 문을 여는 것이 목표입니다. key를 넣는 과정은 ..
https://www.acmicpc.net/problem/5427 5427번: 불 상근이는 빈 공간과 벽으로 이루어진 건물에 갇혀있다. 건물의 일부에는 불이 났고, 상근이는 출구를 향해 뛰고 있다. 매 초마다, 불은 동서남북 방향으로 인접한 빈 공간으로 퍼져나간다. 벽에� www.acmicpc.net 난이도 : 골드 4 BFS를 이용해 풀었습니다. 2020/08/01 - [문제풀이/자바] - [백준 3055] 탈출 (자바) [백준 3055] 탈출 (자바) https://www.acmicpc.net/problem/3055 3055번: 탈출 문제 사악한 암흑의 군주 이민혁은 드디어 마법 구슬을 손에 넣었고, 그 능력을 실험해보기 위해 근처의 티떱숲에 홍수를 일으키려고 한다. 이 숲에는 고 jellyinghe..
https://www.acmicpc.net/problem/2589 1644번: 소수의 연속합 첫째 줄에 자연수 N이 주어진다. (1 ≤ N ≤ 4,000,000) www.acmicpc.net 난이도 : 골드 5 BFS를 이용한 브루트 포스입니다. 땅의 한 지점에서 BFS로 퍼져나가며 가장 큰 수가 가장 먼 거리입니다. 모든 지점에서 BFS를 통해 먼 거리를 최신화시켜줍니다. 전역 변수 n, m = 지도의 가로, 세로의 크기 answer = 가장 먼 거리(답) st = 땅의 좌표를 저장하는 스택 dx, dy = 좌표 이동시 사용할 배열 메소드 void main 입력 값을 받고 L(땅) 일 때 스택에 push 합니다. 모든 좌표값에 대해 먼 거리를 탐색하여 답을 찾고 출력합니다. (find 호출) void ..
https://www.acmicpc.net/problem/1707 1707번: 이분 그래프 입력은 여러 개의 테스트 케이스로 구성되어 있는데, 첫째 줄에 테스트 케이스의 개수 K(2≤K≤5)가 주어진다. 각 테스트 케이스의 첫째 줄에는 그래프의 정점의 개수 V(1≤V≤20,000)와 간선의 개수 www.acmicpc.net 난이도 : 골드 4 우선 이 문제를 풀기 위해서는 이분 그래프에 대해 알아야 합니다. 저는 문제를 처음 읽었을 때 이분 그래프를 잘못 이해해서 이상한 방향으로 갔습니다. 이런식으로 그래프가 2덩어리로 나눠진 것을 찾는 문제인지 알았어요.. 하지만 이런 친구가 이분 그래프였습니다. 이분 그래프에 대해 쉽게 설명드리겠습니다. 전 어렵고 전문적이게 설명을 못 하기 때문이예요. 저는 이렇게 ..
https://www.acmicpc.net/problem/11559 11559번: Puyo Puyo 현재 주어진 상황에서 몇연쇄가 되는지 출력하라. (하나도 터지지 않는다면 0을 출력하면 된다.) www.acmicpc.net 난이도 : 골드 5 개인적으로 이런 유형의 문제를 좋아해서 재밌게 풀었습니다. 여러 기능을 구현하다 보면 열심히 일 하는 느낌(?)이 들어서 기분이 좋아요. 다양한 기능이 필요하지만 어렵지 않고 각 기능만 제대로 구현한다면 잘 동작하는 문제였습니다. 한 사이클에 터질 수 있는 블록을 모두 체크해두고 사이클이 끝나면 그 블록들을 터트린 후 위에 붕 떠있는 블록들을 밑으로 내려주는 과정을 반복하면 됩니다. 쉽죠? 전역 변수 map[][] = 게임판 answer = 몇 사이클 돌았나?(답..
https://www.acmicpc.net/problem/3055 3055번: 탈출 문제 사악한 암흑의 군주 이민혁은 드디어 마법 구슬을 손에 넣었고, 그 능력을 실험해보기 위해 근처의 티떱숲에 홍수를 일으키려고 한다. 이 숲에는 고슴도치가 한 마리 살고 있다. 고슴도치�� www.acmicpc.net 난이도 : 골드 5 BFS로 어렵지 않게 풀 수 있는 문제였습니다. 주의해야 할 것은 물이 불어날 위치는 못 간다는 것입니다. 그래서 고슴도치가 이동하기 전에 미리 물을 불려놓고 고슴도치를 이동시켰습니다. 전역 변수 r, c = 티떺숲의 크기 answer = 이동 시간 endX, endY = 비버 굴의 좌표값 startX, startY = 고슴도치의 시작 위치 map[][] = 티떺숲의 상태 값 visit..