알고리즘/백준33 [백준 6593번 / 상범 빌딩 / JAVA / BFS] https://www.acmicpc.net/problem/6593 6593번: 상범 빌딩 당신은 상범 빌딩에 갇히고 말았다. 여기서 탈출하는 가장 빠른 길은 무엇일까? 상범 빌딩은 각 변의 길이가 1인 정육면체(단위 정육면체)로 이루어져있다. 각 정육면체는 금으로 이루어져 있어 www.acmicpc.net 문제 접근 이론상 맞는 거 같고 다른 분 풀이와 비교해도 내가 뭘 잘못한건지 못찾겠더라 시간을 너무 쏟는 거 같아서 일단 다른 분 풀이라도 올린다. https://hanyeop.tistory.com/398 3차원인 거 빼면 다른 2차원 BFS와 크게 다르진 않다. 맵에 값을 넣고, bfs 메서드에서 반복문 돌면서 큐에 값이 있는지 체크하고 큐 값 꺼내와서 현재 위치에서 갈 수 있는 다음 공간 확인한 뒤.. 2023. 4. 29. [백준 7569 / 토마토 / JAVA / BFS] https://www.acmicpc.net/problem/7569 7569번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N과 쌓아올려지는 상자의 수를 나타내는 H가 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M ≤ 100, 2 ≤ N ≤ 100, www.acmicpc.net 문제 접근 처음 풀어보는 3차원 문제다. 맵을 만들면서 안익은 토마토의 갯수를 세고 익은 토마토가 있으면 큐에 저장한다. 이후 현재 저장된 익은 토마토들의 주변만 탐색 후 안익은 토마토를 익은 토마토로 변경시켜주고 이 과정을 거치면 하루를 증가시켜준다. while문의 조건에 따라 안익은 토마토가 더 이상 없거나 탐색할 익은 토마토가 없을 경우 반복문을 빠져나가고 그 때 안익.. 2023. 4. 28. [백준 4179번 / 불! / JAVA / BFS] https://www.acmicpc.net/problem/4179 4179번: 불! 입력의 첫째 줄에는 공백으로 구분된 두 정수 R과 C가 주어진다. 단, 1 ≤ R, C ≤ 1000 이다. R은 미로 행의 개수, C는 열의 개수이다. 다음 입력으로 R줄동안 각각의 미로 행이 주어진다. 각각의 문자 www.acmicpc.net 문제 접근 좀 어렵게 느껴졌다. 불과 지훈이를 똑같이 한 칸 씩 이동시켜야 한다. 불과 지훈이의 이동 관련된 while문을 다시 전체 while문으로 감싼다. 기존에 BFS를 사용할 땐 while문의 조건을 !변수명.isEmpty()로 값이 있을 때 까지 계속 돌렸는데 불과 지훈이를 같이 이동 시키기 위해선 조건을 큐의 크기로 지정해주었다. → 사이즈는 while문 밖에서 정하고 .. 2023. 4. 26. [백준 1012번 / 유기농 배추 / JAVA] https://www.acmicpc.net/problem/1012 1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 www.acmicpc.net 문제 접근 DFS 2차원 배열을 만들어서 배추있는 지역에 1을 넣어주고, 방문했는지 판단을 위해 2차원 boolean 배열도 만들어 줌 배열을 돌면서 1을 발견하면 네 방향 탐색하면서 방문을 하지 않았고 1인 지역이 있다면 DFS로 타고 들어가서 계속 탐색한다. 연결된 모든 지역을 나비가 타고 들어가기에 1을 처음 발견했을 때만 나비 갯수를 카운트 해준다. ++ 2차원 배열 공간의 크기를 지정해줄 때 세로, .. 2023. 4. 24. [백준 1743 /음식물 피하기 / JAVA / 완전 탐색] https://www.acmicpc.net/problem/1743 1743번: 음식물 피하기 첫째 줄에 통로의 세로 길이 N(1 ≤ N ≤ 100)과 가로 길이 M(1 ≤ M ≤ 100) 그리고 음식물 쓰레기의 개수 K(1 ≤ K ≤ N×M)이 주어진다. 그리고 다음 K개의 줄에 음식물이 떨어진 좌표 (r, c)가 주어진다 www.acmicpc.net 문제 접근 배열 공간에서 음식물 쓰레기를 발견하면 해당 위치를 기준으로 BFS, DFS 중 탐색 방법을 정한다. DFS는 한 곳을 쭉 탐색했다가 처음 위치로 돌아오지만 BFS는 한 곳 탐색하고 다시 시작 위치로 와서 다음 방향을 탐색하기 때문에 움직일 방향을 Queue에 미리 저장해둔다. ++ 이런 문제에 익숙해질 필요가 있을 거 같다. DFS import.. 2023. 4. 23. [백준 15649 / N과 M(1) / JAVA / 완전 탐색] https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 문제 접근 입력한 N 숫자를 1부터 다 돌아가면서 중복없이 출력해야한다. 재귀 함수로 호출과 귀환을 반복하면서 모든 숫자를 탐색한다. 이해가 안되서 출력을 찍어가면서 했는데도 머리가 어지럽다. 이런 형태로 쓰인다라고 생각하고 필요하면 다시와서 봐야겠다. import java.util.*; import java.io.*; public class Main { static int N; // 여러 메서.. 2023. 4. 21. 이전 1 2 3 4 5 6 다음