본문 바로가기

BFS68

[자바] 백준 17616 - 등수 찾기 (java) 목차 문제 : boj17616 필요 알고리즘 그래프 이론, 그래프 탐색 (bfs, dfs) A와 B의 관계를 단방향 그래프로 볼 수 있는 직관이 필요한 문제이다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 우선 너비 우선 탐색(BFS)을 모른다면 '이 글'을 참고해보자. 문제로 주어진 부분을 그래프로 변경해 생각해보는 아이디어가 필요한 문제로, 교육적으로도 상당히 좋은 문제라 생각된다. 우선 'A가 학생 B보다 더 잘했다.. 2023. 8. 11.
[자바] 백준 16965 - 구간과 쿼리 (java) 목차 문제 : boj16965 필요 알고리즘 너비 우선 탐색 (bfs) 뭔가 bfs와 관련없어 보이지만, bfs 문제이다! ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 BFS를 모른다면 우선 '이 글'을 참고해보자. 결국 이 문제에서 중요한건 '구간 (x1, y1)에서 구간 (x2, y2)로 이동하려면 x2 < x1 < y2 또는 x2 < y1 < y2를 만족' 이 부분이다. 처음엔 서로소 집합 (disjoint set)으.. 2023. 7. 23.
[자바] 백준 9202 - Boggle (java) 목차 문제 : boj9202 필요 알고리즘 브루트포스, 백트래킹, 그래프 탐색(dfs 혹은 bfs 등), 트리, 트라이(Trie) 원래 플래급 가면 여러가지 섞어야 하는 경우가 많긴하다. 내 경우엔 메인 알고리즘은 트라이였고, 나머진 트라이로 로직 구현을 위한 부가적인 부분이었다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 일단 내 경우엔 트라이로 풀었는데, 의견쪽을 보니 시간이 널널해서 그냥 해싱 처리해도 된다고 한다... 2023. 6. 27.
[자바] 백준 12893 - 적의 적 (java) 목차 문제 : boj12893 필요 알고리즘 이분 그래프, 그래프 탐색(BFS, DFS 등) 이분 그래프가 만들어지는지 파악할수만 있으면 풀 수 있다. 일반적으로 이분 그래프 판정을 위해 DFS나 BFS를 사용한다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 생각과정은 다음과 같다. 1. 적의 적은 친구라고 계속해서 연결해나갈 때, 결국 어느 누구의 관점에서 보든 서로 연관이 있는(간선이 연결되어진) N명이 정확히 적과 .. 2023. 6. 18.
[자바] 백준 15558 - 점프 게임 (java) 목차 문제 : boj15558 필요 알고리즘 BFS (너비 우선 탐색) BFS로 풀 수 있는 문제이다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 혹시 BFS에 대해 모른다면 '이 글'을 참고해보자. 최단거리를 찾는게 아닌데 BFS를 사용하는 이유는, '1초에 한 칸씩 각 줄의 첫 칸이 사라진다' 라는 부분에서 초가 결국 거리라고 생각하면 편하게 처리할 수 있기 때문이다. 결국 그냥 동일한 라인의 +1지점, -1지점, 다.. 2023. 5. 10.
[자바] 백준 18352 - 특정 거리의 도시 찾기 (java) 목차 문제 : boj18352 필요 알고리즘 너비 우선 탐색(BFS) 일반적인 BFS 탐색에서, 최단 거리에 목적지를 도착하는게 아니고 특정 거리인 지점을 찾는다는점만 다르다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 BFS를 잘 모른다면 'BFS 알고리즘 (너비 우선 탐색)' 글을 참고해보자. 일반적인 BFS 알고리즘으로 구현해주면 되는데, 목적지까지의 최단 거리를 구하는게 아니라 특정 거리인 위치를 찾는다는 점이 다.. 2023. 4. 12.
[자바] 백준 18224 - 미로에 갇힌 건우 (java) 목차 문제 : boj18224 필요 알고리즘 너비 우선 탐색 (BFS) 좀 어려운 BFS 문제이다. 근본은 동일하다. 방문체크와 탐색만 잘 하면 된다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 BFS에 대해 모른다면 '이 글'을 참고해보자. 특히 '방문체크에 대해 좀 더 써봄' 부분을 이해해야 풀 수 있다. 결국 이 문제도 방문체크를 모든 경우를 표현할 수 있으면서도 최소한으로 할 수 있고, 문제에서 주어진 대로 탐색을.. 2023. 3. 15.
[자바] 백준 8061 - Bitmap (java) 목차 문제 : boj8061 필요 알고리즘 너비 우선 탐색 (BFS) BFS로 최단 거리를 얻어서 풀 수 있는 문제이다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 문제에서 제시된 거리가 '|i1-i2|+|j1-j2|' 인 점에서 상하좌우로 한칸 움직인 것을 거리 1로 보는 '맨해튼 거리' 방식임을 알 수 있다. 이 문제에서 원하는건 결국 '1'인 위치들에서 출발해서 '0'인 위치들의 최단거리를 재는 것이다. 따라서 기본.. 2023. 3. 12.
[자바] 백준 1326 - 폴짝폴짝 (java) 목차 문제 : boj1326 필요 알고리즘 BFS (너비 우선 탐색) 각 징검다리에서 이동할 수 있는 모든 곳으로 이동하며 BFS를 진행해서 풀 수 있다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 BFS를 모른다면 'BFS 알고리즘 (너비 우선 탐색)' 글을 참고해보자. 일단 맞왜틀을 외치고 있다면, 나처럼 국어 이슈일 수 있다. "징검다리에 쓰여 있는 수의 배수만큼 떨어져 있는 곳" 이 문장에 대해 난 당연히 배수니깐.. 2023. 3. 9.
[자바] 백준 18112 - 이진수 게임 (java) 목차 문제 : boj18112 필요 알고리즘 BFS (너비우선탐색) 시작 이진수부터 목표 이진수까지 문제에서 제시된 동작들을 통해 순회하며 BFS를 진행하는 문제이다. 비트마스킹 애초에 문제 자체가 비트연산을 사용하는걸 전제로 만들어진 듯 하다. 안 쓸 이유가 없다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 BFS를 모른다면 'BFS 알고리즘 (너비 우선 탐색)' 글을 먼저 읽어보자. 이 글에 제시된 동작들은 모두 비트.. 2023. 3. 7.