7569번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N과 쌓아올려지는 상자의 수를 나타내는 H가 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M ≤ 100, 2 ≤ N ≤ 100, www.acmicpc.net [풀이] - BFS를 이용하여 풀었습니다.(7576번 문제와 거의 유사합니다. 차이점은 h(높이)에 대한 것이 있냐 없냐입니다.) - 7576번 토마토 문제에는 높이(h)가 없지만, 이번에는 h가 추가되어 3차원으로 arr을 선언해야 합니다. - 익은 토마토가 가지고 있는 토마토에 전부 영향을 줘야 하기 때문에 queue에 담긴 위치를 기반으로 모든 토마토를 익게 할 때까지 횟수를 기록해야합니다. - 이때, 횟수는 이전에 arr 2차원 배..
1987번: 알파벳 세로 R칸, 가로 C칸으로 된 표 모양의 보드가 있다. 보드의 각 칸에는 대문자 알파벳이 하나씩 적혀 있고, 좌측 상단 칸 (1행 1열) 에는 말이 놓여 있다. 말은 상하좌우로 인접한 네 칸 중의 한 칸으 www.acmicpc.net [풀이] - DFS를 이용하여 풀 수 있었습니다. - 다음 위치를 방문할 수 있는지를 해당하는 곳의 알파벳을 이전에 방문한 적있는지 확인해야 합니다. - 그래서, 1차원 배열로 26개의 크기로 boolean 배열을 만들었습니다. - 이후, 재귀적으로 메소드가 호출될 때 몇 칸을 지났는지에 대한 count 변수도 함께 넘겨줍니다. - 최종으로는, 다음 갈 곳이 이미 방문한 곳이라 갈 수 없다면, count 변수의 최대값을 answer 변수에 담고 메소드를 ..
2583번: 영역 구하기 첫째 줄에 M과 N, 그리고 K가 빈칸을 사이에 두고 차례로 주어진다. M, N, K는 모두 100 이하의 자연수이다. 둘째 줄부터 K개의 줄에는 한 줄에 하나씩 직사각형의 왼쪽 아래 꼭짓점의 x, y좌표값과 오 www.acmicpc.net [풀이] - DFS를 이용하여 문제를 풀었습니다.(DFS관련 유형에서 기본문제입니다.) - visited를 이용해서 재귀를 해야하는지, 안해야하는지 구분을 하려했습니다. - 하지만, 이 부분에 대해서는 arr 변수에 값을 1로 재할당하는 부분이 있어서 없어도 되는 부분입니다. - 영역의 개수는 리스트의 사이즈와 동일합니다. - 각 영역의 넓이를 출력해야 하므로 리스트에 담아 정렬 후, 출력합니다. [코드] import java.io.Buffe..
7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net [풀이] - BFS를 이용하여 풀었습니다. - 익은 토마토가 가지고 있는 토마토에 전부 영향을 줘야 하기 때문에 queue에 담긴 위치를 기반으로 모든 토마토를 익게 할 때까지 횟수를 기록해야합니다. - 이때, 횟수는 이전에 arr 2차원 배열에 기록된 것에 +1 함으로써 기록할 수 있습니다. - 주어진 값에서 1(익은 토마토)인 경우 모두 큐에 담아 이 큐에 담긴 Point 값이 시작 지점이 됩니다. - 이후, queue에서 하나씩 값을 꺼내 ..
1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 www.acmicpc.net [풀이] - BFS 유형의 문제였으며 영역을 구해야 하는 문제입니다. - 반복문을 돌며 값이 1이고, 방문하지 않았을 경우 solve메소드를 호출한 횟수를 구해 출력했습니다. - solve메소드를 호출했다는 것은 곧 이전과 새로운 영역이며 이 영역을 호출하면서 연결되어 있는 곳을 모두 확인하게 됩니다. - BFS는 큐를 이용해서 구현했으며 Point 라는 내부 클래스를 구현하여 x,y좌표 생성자로 만들 수 있도록 했습니다. - solve() 메소드를 통해 새로 방문한 곳이면..
5397번: 키로거 첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한줄로 이루어져 있고, 강산이가 입력한 순서대로 길이가 L인 문자열이 주어진다. (1 ≤ L ≤ 1,000,000) 강산이가 백스페이스를 입 www.acmicpc.net [풀이] 자료구조를 사용하는 구현 문제입니다. 저는 단순히 스택만 사용했지만, 힌트를 보니 연결 리스트를 이용할 수 있다고 되어있습니다. 검색해보니 대부분의 블로그는 스택을 이용했습니다.(아무래도 스택을 이용하는게 가장 간단하다고 생각합니다.) 스택을 두개 사용하여 ''를 기준으로 나눠서 사용했습니다. ''이 입력되었을 경우에는 pre 스택에 post에 쌓인 값을 빼서 추가하도록 했습니다. 이러한 조건문을 switch문을 통해 구현했습니다. '' , '-..