[BOJ] 백준 1525 퍼즐 (JAVA)
Algorithm/- Baekjoon2024. 3. 19. 20:58[BOJ] 백준 1525 퍼즐 (JAVA)

📑 문제 🌱 아이디어"고민해도 안 나온다면 답지보고 내 것으로 만들자" 이 문제는 내가 여태까지 풀어왔던 알고리즘 지식 + 기법(?)으로  어떻게는 해결해보려고 했으나 다 실패했다.우울해하면서 결국 검색을 통해 코드를 봤다.HashMap으로 BFS 방문처리를 하는 코드였지만 정말 특이한 부분이 있었다 1차원 배열의 인덱스(문자열)를 2차원 배열로 변경해서 경로 이동후 다시 1차원 배열(문자열)로 변환 후HashMap을 통해 문자열을 저장하는 방법이었다 예를 들어문자열 str = "123456789"3*3 2차원 배열로 나타낼 때 1차원 배열 -> 2차원 배열Y = 3 / 3X = 3 % 3 숫자 4는idx ( 1 , 0 )에 위치하게 된다만약 X 축으로 +1을 해주고 idx ( 1 , 1 )로 이동했..

[BOJ] 백준 17836 공주님을 구해라! (JAVA)
Algorithm/- Baekjoon2024. 2. 13. 19:53[BOJ] 백준 17836 공주님을 구해라! (JAVA)

📑 문제🌱 아이디어"검을 먹는 경우"와 "검을 먹지 않는 경우"를 구하고 제한시간에 맞는 경우를 출력하자. 기본적인 BFS 알고리즘을 사용하지만 검을 먹는 경우 or 검을 먹지 않는 경우를 분리해서 풀어야 한다.그러기 위해선 BFS 알고리즘을 실행해서 검을 먹을 수 있는지에 대한 여부를 확인하고 먹었다면먹은 위치에서 목표가 있는 위치까지 벽을 부술 수 있기 때문에(장애물이 없다) 맨해튼 거리 로 최단 거리를 구해 더해주면 된다. Way1, Way2 는 도착할 수 없는 경우도 있기 때문에 Max 값으로 설정 후 진행한다Way1 = 검을 먹지 않는 경우 -> 기본 BFS으로 목적지까지 소요시간Way2 = 검을 먹은 경우 -> 검을 먹기까지  소요시간 + 맨해튼거리(한 칸 당 한 시간) 검을 먹기만 한다면..

[BOJ] 백준 2667 단지번호붙이기 (JAVA)
Algorithm/- Baekjoon2024. 1. 3. 19:24[BOJ] 백준 2667 단지번호붙이기 (JAVA)

📑 문제 🌱 아이디어BFS(너비우선탐색) + 구역 카운팅 문제이다! ArrayList에 구역 범위를 담으면 된다. BFS 알고리즘 구현만 가능하다면 아주 쉽게 풀 수 있는 문제이다. 입력이 0, 1 단 두 개 이기 때문에 '1' 일 때만 인접해 있는 모든 '1' 을 탐색하고 범위를 카운팅해  ArrayList에 입력한다. 즉 ArrayList의 사이즈가 총 단지수이고, 저장된 요소를 오름차순으로 출력하면 된다! 아래 코드에 주석을 달아 놨으니 이해하는데 큰 어려움은 없을 것이다!🌱 코드 및 풀이기본적인 BFS 알고리즘이다. '1' 을 발견한다면 인접한 '1' 까지 전체 탐색하고 vi 배열을 통해 방문 처리를 해준다 ArrayList에 단지 수를 입력하고 ArrayList의 사이즈 = 총 단지수, A..

[BOJ] 백준 14502 연구소 (JAVA)
Algorithm/- Baekjoon2023. 12. 13. 23:48[BOJ] 백준 14502 연구소 (JAVA)

📑 문제  🌱 아이디어지도의 크기 (3 ≤ N, M ≤ 8), 입력되는 값이 적다! = 완탐 가능하다.지도의 최대 크기가 8*8 = 64 이다. 완전탐색 으로 풀 수 있다는 뜻이다,즉 지도에 벽을 3개를 모든 경우만큼 다 세운 후 가장 많은 안전구역의 크기를 구하면 된다!DFS, BFS 둘 다 사용해서 풀 수 있다DFS = 벽 세우기, BFS = 바이러스 퍼트리기 이렇게 역할을 나눠서 구현할 수 있다. 🌱 코드 및 풀이 엄청 길다;;; 하지만 각 기능을 함수로 나눠서 설명을 달아 놨으니 천천히 보신다면 이해하기엔 어려움이 없을 것이다아마도 이해가 안 된다면 댓글 달아주시면 최대한 설명해 보겠습니다.그래도 간단히 설명을 하자면 dfs() -> 지도에 벽을 3개를 세운다bfs() -> 바이러스를 전염시..

반응형
image