본문 바로가기

BFS68

[자바] 백준 1194 - 달이 차오른다, 가자. (java) 목차 문제 : boj1194 필요 알고리즘 BFS (너비우선 탐색) 최단거리를 찾는 문제로 BFS로 풀 수 있다. 비트마스킹 BFS 진행 시 모든 경우에 대해 방문체크가 가능해야한다. 이걸 위해 비트마스킹을 사용한다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 BFS를 모른다면 우선 'BFS 알고리즘 (너비 우선 탐색)'을 보자. 특히 이 문제를 풀기 위해서는 '방문체크에 대해 좀 더 써봄' 부분에 적어놓은걸 이해해야 한.. 2023. 3. 6.
[자바] 백준 18513 - 샘터 (java) 목차 문제 : boj18513 필요 알고리즘 개념 BFS (너비 우선 탐색) BFS로 풀 수 있는 문제이다. 논리는 약간 그리디에 가까운 것 같다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 샘터가 아래처럼 3개가 있다고 해보자. 당연하게도 샘터에서 가장 가까운 곳 부터 집을 두는 것이 이득일 것이다. 따라서 각 샘터에서 출발해 좌우로 퍼지면서 집을 지어주면 된다. 거리가 1 떨어진 집은 아래와 같다. 거리가 1 떨어진 .. 2023. 3. 3.
[자바] 백준 27453 - 귀엽기만 한 게 아닌 한별 양 (java) 문제 : boj27453 필요 알고리즘 개념 너비 우선 탐색 (bfs) BFS긴 한데 상당히 난이도가 높은 BFS인 것 같다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 BFS 추천 문제이다. 문제가 좋은 것 같다. BFS에 대해 모른다면 'BFS 알고리즘 (너비 우선 탐색) - 배열 BFS, 그래프 BFS' 글을 참고해보자. 특히 '방문체크에 대해 좀 더 써봄' 부분이 필요하다. BFS로 풀려면 모든 경우의 수를 파악해.. 2023. 2. 24.
[자바] 백준 14940 - 쉬운 최단거리 (java) 문제 : boj14940 필요 알고리즘 개념 그래프, 너비 우선 탐색 (BFS) 그래프에 대한 약간의 규칙을 이해할 수 있어야 한다. 그것만 이해하면 그냥 BFS 한방에 해결 가능하다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 모든 지점에서 목표지점까지의 최단 거리는 사실, 목표지점에서 모든 지점으로의 최단 거리와 같다. 사실 간선이 양방향이니 당연한 부분이다. 이것만 알면 그냥 목표지점부터 BFS를 한방 돌려서 모든 .. 2023. 2. 14.
[자바] 백준 14395 - 4연산 (java) 문제 : boj14395 필요 알고리즘 개념 너비 우선 탐색 (bfs) BFS로 풀 수 있다! ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 BFS를 모른다면 'BFS 알고리즘 (너비 우선 탐색)' 글을 참고해보자. 우선 걸러낼 수 있는걸 먼저 생각해보자. 1. s = s - s; 연산의 경우 무조건 0이 되며, 이후 *, +, / 뭘 해도 0 이외로 벗어날 수 없다. 근데 t는 1 이상으로 입력이 주어진다. 따라서 그냥 버.. 2023. 2. 7.
[자바] 백준 11967 - 불켜기 (java) 문제 : boj11967 필요 알고리즘 개념 BFS, DFS 등의 그래프 탐색 알고리즘 그래프 탐색을 통해 풀 수 있다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 우선 BFS를 모른다면 'BFS 알고리즘 (너비 우선 탐색)' 글을 참고하자. 로직을 정확히 세워서 그래프 탐색을 진행하면 풀 수 있다. 글로 설명하면 아래와 같다. 우선 각 방의 상태를 다음과 같이 설정하였다. - 미방문 : 0 - 불 켜져있음 : 1 - 이.. 2023. 2. 5.
[자바] 백준 9205 - 맥주 마시면서 걸어가기 (java) 문제 : boj9205 필요 알고리즘 개념 너비 우선 탐색 (bfs), 깊이 우선 탐색(dfs), 분리 집합(disjoint set) 중 하나 데이터를 원하는 형태로 바꾸는 사전작업이 좀 필요하다. 그것만 하면 그냥 가중치가 동일한 정점과 간선이 주어질 때 특정 지점부터 특정 지점까지 도달 가능하는지만 판단하면 되므로, bfs나 dfs나 분리집합이나 아무거나 써서 찾아주면 된다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이.. 2023. 2. 2.
[자바] 백준 16768 - Mooyo Mooyo (java) 문제 : boj16768 필요 알고리즘 개념 BFS (너비 우선 탐색) 등의 그래프탐색, 시뮬레이션 연결된 뿌요들을 파악하기 위해 BFS, DFS와 같은 그래프 탐색이 필요하다. 그 외에는 그냥 제시된대로 시뮬레이션을 돌려주면 된다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 그래프 탐색을 모른다면 BFS 글을 봐보자. 백준 11559 - Puyo Puyo의 아주 약간 상위호환이다. 개념은 완전히 동일하다.그러니 이 문제.. 2023. 1. 16.
[자바] 백준 11559 - Puyo Puyo (java) 문제 : boj11559 필요 알고리즘 개념 BFS (너비 우선 탐색) 등의 그래프탐색, 시뮬레이션 연결된 뿌요들을 파악하기 위해 BFS, DFS와 같은 그래프 탐색이 필요하다. 그 외에는 그냥 제시된대로 시뮬레이션을 돌려주면 된다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 그래프 탐색을 모른다면 BFS 글을 봐보자. 시뮬레이션으로 생각해본다면 다음의 과정을 진행하면 된다. 1. 연결된 4개이상의 뿌요들을 없앤다. 없앨.. 2023. 1. 16.
[쇼미더코드 3회] 백준 27211 - 도넛 행성 (자바 java) 문제 : boj27211 필요 알고리즘 개념 BFS (너비 우선 탐색) 약~간 응용된 BFS 문제이다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 BFS를 모른다면 'BFS 알고리즘 (너비 우선 탐색) - 배열 BFS, 그래프 BFS 글'을 참고해보자. 사실 위 글을 이해했다면 그냥 BFS와 다를바가 없다. 그냥 NxM 사이즈를 넘어갔을 때, 반대편으로 이동만 가능하도록 해두면 된다. 입력으로 주어진 지도 정보를 가로세로.. 2023. 1. 15.