목록algorithm/BOJ (26)
connecting the dots
문제 www.acmicpc.net/problem/16236 16236번: 아기 상어 N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가 www.acmicpc.net 풀이 fish라는 클래스를 만들어 물고기의 위치와 아기상어로부터 떨어져있는 거리를 저장할 수 있도록 해준다 아기상어의 위치부터 BFS를 사용해 물고기까지의 거리를 구한다/ 이 때 아기상어의 크기보다 큰 물고기는 지나가지 못하고 continue한다 / 아기상어의 크기보다 작은 물고기의 위치정보와 거리정보를 fish type으로 큐에 넣어 저장해둔다 BFS가 끝나면 먹을 수 있는 물고기 리스트가 들어있..
문제 풀이 이렇게 1초에 한 칸씩 이동할 때는 bfs를 사용한다 / 물이 넘칠 때도 bfs를 사용했다 고슴도치가 먼저 이동하고 물이 차도록 구현해서 고슴도치가 이동할 때 물이 이미 있는 곳 / 물이 찰 예정인 곳은 이동하지 않도록 했는데 굳이 이렇게 안 해도 물이 먼저 차고 고슴도치가 이동하면 물이 이미 있는 곳만 고려해주면 된다 물이 찰 예정인 곳까지 고려하느라 비버의 굴에 거의 다 왔을 때 물이 바로 옆에 있으면 이동하지 못하는 문제가 생겼다 / 이동할 곳이 비버의 굴이면 물이 옆에 있어도 이동할 수 있도록 비버의 굴인지 여부를 먼저 따져주었다 코드 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Lin..
문제 www.acmicpc.net/problem/4963 4963번: 섬의 개수 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스의 첫째 줄에는 지도의 너비 w와 높이 h가 주어진다. w와 h는 50보다 작거나 같은 양의 정수이다. 둘째 줄부터 h개 줄에는 지도 www.acmicpc.net 풀이 쉬운 탐색 문제 / dfs 에서 true or false를 리턴하도록 하니까 따로 섬의 개수를 세지 않아도 된다 코드 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { static BufferedReader in = new Buffer..
문제 풀이 처음에 문제를 잘 안 읽어서 틀렸다. 입력 받은 순서대로 회전 후 값을 출력하는 게 아니라 입력 받은 좌표 중에서 모든 순서대로 결과를 뽑은 다음에 그 중 최솟값을 출력하는 문제이다. 회전해야 할 좌표에 대한 정보 K개를 배열에 넣는다 회전 정보 K개 만큼의 순열을 생성해 어떤 순서로 회전할 지 정한다 만들어진 순열을 바탕으로 회전한다 배열 A의 값을 구한다 다시 3으로 돌아간다 모든 순열에 대해 배열 A의 값을 비교해 최솟값을 출력한다 배열을 회전할 때는 중간 좌표인 A[3][4]를 기준으로 S값 만큼 for문을 돌려 A[3-i][4-i] 부터 시작해 회전하도록 구현했다. 코드 import java.io.BufferedReader; import java.io.InputStreamReader;..