[BOJ] 백준 16985 Maaaaaaaaaze (JAVA)
Algorithm/- Baekjoon2024. 8. 14. 16:46[BOJ] 백준 16985 Maaaaaaaaaze (JAVA)

📑 문제🌱 아이디어순열과 중복순열을 3차원 배열을 컨트롤해 보자! 문제를 접하고 나서, 3차원 배열의 미로 찾기는 이미 몇 번 해보았기 때문에 어렵지 않았다.가장 고민했던 점은 어떻게 최적의 3차원 미로를 만드냐였다... 그래서 순열과 중복순열로 배열을 컨트롤할 수 있는 파라미터를 만드려고 했다 중복순열은 배열 한 층을 90도, 180도,  270도를 핸들링할 때 사용했고당연하게도 인덱스가 겹치면 안 되기 때문에 순열은 3차원 배열의 층을 조립할 때 사용했다 순열, 중복순열을 구하고 배열을 핸들링해도 시간초과가 나지 않는다고 확신하고 구현했다. 먼저 중복 순열, 순열 구하고2중 for문으로 각각의 각도에서 배열의 층을 쌓는 방식으로 모든 3차원 배열의 경우의 수를 체크했다.만든 큐브마다 BFS로 미로..

[BOJ] 백준 17472 다리 만들기 2 (JAVA)
Algorithm/- Baekjoon2024. 7. 7. 04:45[BOJ] 백준 17472 다리 만들기 2 (JAVA)

📑 문제 🌱 아이디어BFS로 각 섬에 번호를 부여하고, 모든 섬을 연결하는 다리잇기(MST)로 구현하자 2차원 평면 상 섬과 바다가 입력으로 주어지고, 다리를 연결해서 모든 섬을 연결하려고 한다.다리는 가장 짧게 연결해야 한다. 즉 모든 섬을 최소비용으로 모두 잇는다면 = 최소스패닝임을 유추해야 풀 수 있다. 아래와 같은 3단계를 거쳐서 구현했다. 1. 모든 섬을 탐색하고 번호를 부여한다 그래야 A -> B를 특정할 수 있다.2. A -> B가 직선으로 장애물 없이 다리를 이을 수 있는지 판단 후 우선순위큐에 시작노드, 목표노드, 비용을 입력하기3. 크루스칼알고리즘으로 모든 섬을 잇기 맵의 크기, 섬의 개수가 매우 작다, 시간초과를 걱정하는 것보다 차근차근 구현에 집중하는 게 좋은 문제인 것 같다!?..

[BOJ] 백준 17267 상남자 (JAVA)
Algorithm/- Baekjoon2024. 5. 14. 13:51[BOJ] 백준 17267 상남자 (JAVA)

📑 문제  🌱 아이디어BFS 응용문제, 다른 문제들과 비슷하게 상, 하, 좌, 우를 이동할 수 있지만 좌, 우는 이동 횟수가 제한된다.그렇다면 총 이동할 수 있는 칸은 몇 칸인가? 를 물어보는 문제이다. 먼저 현재 좌표, 좌, 우 남은 이동 횟수를 담는 객체를 만들고 방문처리 및 0-1 BFS를 돌리면 된다고 생각했다.하지만 91%쯤 실패한다... 예상컨대 큰 틀에서 구현자체는 틀리지 않았지만, 히든케이스를 만족시키지 못할 만큼디테일하게 구현하지 못했던 것 같다 BFS 응용문제에선 대부분 방문처리에서 히든테스트케이스가 나온다. 기본적인 2차원 boolean 배열의 방문처리에는 한 가지 단점이 있다.- 먼저 도착한 노드가 최적값인지, 아닌지를 판단하지 못하고 무조건 먼저 도착한 노드만 통과시킨다. 하나..

[BOJ] 백준 31782 저체온증 (JAVA)
Algorithm/- Baekjoon2024. 4. 30. 18:34[BOJ] 백준 31782 저체온증 (JAVA)

📑 문제🌱 아이디어낮, 밤 관련 BFS를 각각 구현하고, "영구적인 저체온증 환자"가 생기는 조건을 찾아보자. 위 문제의 키포인트는 볼드체로 잘 강조되어 있다. 낮, 밤을 나눠서 생각해 보자 - 낮"체온 회복 과정은 낮 사이 충분히 많이 반복될 수 있다."이 뜻은 다른 사람이 체온이 회복이 된다면, 그 주변 사람도 연쇄적으로 체온 회복이 가능하다는 뜻이다즉, 낮 BFS를 통해 단 한 번으로 가능한 모든 사람을 회복시켜야 한다. - 밤K명만큼 밤에는 저체온증 환자가 발생한다 단 "최악의 경우"로 발생한다.이 문제에서 최악의 경우란 낮이 되어도 회복이 불가능한 저체온증 환자이다. 그렇다면 어떤 조건에서 정상체온 환자가영구적인 저체온증으로 변경되는지 캐치해야 한다. 가장 먼저, 낮에서 체온을 회복할 때 정..

[BOJ] 백준 27211 도넛 행성 (JAVA)
Algorithm/- Baekjoon2024. 4. 10. 17:56[BOJ] 백준 27211 도넛 행성 (JAVA)

📑 문제🌱 아이디어BFS탐색을 통해 맵밖으로 나가게 된 경우를 모듈러 연산으로 처리하자! 만약 도넛행성에 있다고 상상해 보자! 어떤 방향으로 쭉 직진하게 되었을 때 결국 제자리로 돌아올 것이다.즉 좌표  xy (0,0)에서 한 칸 더 위로 직진한다면 (0, N-1)이 되어야 한다. 이 조건은 동서남북 어디서나 동일하게 적용한다. 위 문제는 기존에 범위체크에서 배열밖 좌표로 이동하는 것을 막아주는 BFS가 아닌맵밖으로 나간다면 반대 방향으로 탐색하게 만들어야 한다. 모듈러 연산을 통해 위와 같은 효과를 얻을 수 있다. 예를 들어 N = 5 일 때 배열의 인덱스는 0, 1, 2, 3, 4 일 것이다 인덱스 5를 탐색하려고 할 때 5 %= N을 통해 다시 인덱스 0을 탐색하게 만들면 된다.🌱 코드 및 풀..

반응형
image