본문 바로가기

PS/BOJ764

[자바] 백준 18112 - 이진수 게임 (java) 목차 문제 : boj18112 필요 알고리즘 BFS (너비우선탐색) 시작 이진수부터 목표 이진수까지 문제에서 제시된 동작들을 통해 순회하며 BFS를 진행하는 문제이다. 비트마스킹 애초에 문제 자체가 비트연산을 사용하는걸 전제로 만들어진 듯 하다. 안 쓸 이유가 없다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 BFS를 모른다면 'BFS 알고리즘 (너비 우선 탐색)' 글을 먼저 읽어보자. 이 글에 제시된 동작들은 모두 비트.. 2023. 3. 7.
[자바] 백준 13015 - 별 찍기 - 23 (java) 목차 문제 : boj13015 필요 알고리즘 구현 문제의 입출력을 보고 규칙성을 찾은 뒤 규칙대로 구현해주는 문제이다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 규칙성을 파악해서 구현해주면 된다. 내 경우엔 크게 맨위, 맨아래, 중간, 그 사이들로 나누어서 생각했다. 코드에서 함수로 나누어두었으니 코드를 확인해보면 될 것 같다. 주의점은 출력할 때 각 줄의 뒤쪽에 공백이 있으면 안된다. 즉, 각 줄이 '*** ' 처럼 .. 2023. 3. 7.
[자바] 백준 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.
[자바] 백준 1048 - 유니콘 (java) 문제 : boj1048 필요 알고리즘 개념 다이나믹 프로그래밍 (DP, 동적계획법) 대부분의 경우의 수 문제는 DP로 풀 수 있다. 이 문제도 DP로 풀 수 있다. 누적합 유니콘의 이동 범위 내의 누적합을 구하기 위해 2차원 누적합을 사용하면 빠르다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 이 문제 설명이 약간 부족한데, 시작은 어느지점에서 해도 된다! 이것때매 좀 헷갈렸다. 우선 DP를 어떤식으로 진행하는지는 알아야.. 2023. 3. 2.
[자바] 백준 23807 - 두 단계 최단 경로 3 (java) 문제 : boj23807 필요 알고리즘 개념 다익스트라, 브루트포스 다익스트라로 거리를 구하고, 세 개의 정점은 브루트포스로 고를 수 있다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 이 문제에서 중요한건 시작점 x, 목표지점인 z, 그리고 P개의 중간정점 중 3개를 지나야 한다는 점이다. 아주 간단하게 생각해보자. x에서 출발해 P개의 중간정점까지의 최단 거리를 모두 안다고 해보자. 그리고 P개의 중간정점에서 중간정점들.. 2023. 3. 1.
[자바] 백준 2072 - 오목 (java) 문제 : boj2072 필요 알고리즘 개념 구현, 시뮬레이션 문제에 제시된대로 시뮬레이션을 구현해주면 된다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 문제에 제시된대로 구현만 해주면 되는 문제이다. 19x19 짜리 오목판이므로 배열을 두고, 흑과 백에 각각 특정 값을 주고 순서대로 배열에 넣어주면 된다. 그리고 넣어준 값을 기준으로 5개가 연속되도록 넣여져 있는지 확인해주면 된다. 구현 자체가 어려울수도 있으므로 내 방.. 2023. 2. 27.
[자바] 백준 27453 - 귀엽기만 한 게 아닌 한별 양 (java) 문제 : boj27453 필요 알고리즘 개념 너비 우선 탐색 (bfs) BFS긴 한데 상당히 난이도가 높은 BFS인 것 같다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 BFS 추천 문제이다. 문제가 좋은 것 같다. BFS에 대해 모른다면 'BFS 알고리즘 (너비 우선 탐색) - 배열 BFS, 그래프 BFS' 글을 참고해보자. 특히 '방문체크에 대해 좀 더 써봄' 부분이 필요하다. BFS로 풀려면 모든 경우의 수를 파악해.. 2023. 2. 24.
[자바] 백준 12764 - 싸지방에 간 준하 (java) 문제 : boj12764 필요 알고리즘 개념 시뮬레이션, 구현, 우선순위 큐 문제에서 제시된대로 시뮬레이션을 구현해주면 된다. 이 문제를 구현할 때 효율적이라 생각한게 우선순위 큐 이므로 우선순위큐도 사용했다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 뭔가 알고리즘적으로 풀이해나가야할 것 같이 생겼는데, 실은 문제에 나온 말 대로 구현만 해주면 풀 수 있다. 다만 쌩구현 문제라고 보기엔 생각이 좀 필요하다. 문제를 보고.. 2023. 2. 24.
[자바] 백준 25178 - 두라무리 휴지 (java) 문제 : boj25178 필요 알고리즘 개념 구현, 문자열 문제에 제시된대로 코드를 짤 수 있는 구현력(?)만 있으면 풀 수 있다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 문제에서 제시된 '조건'을 모두 파악할 수 있게 짜주면 된다. 이 때 두 문자열을 각각 a와 b라고 부르겠다. 조건을 하나씩 생각해보자. 1. 한 단어를 재배열해 다른 단어를 만들 수 있어야 한다. a와 b 내부에 있는 각 소문자의 갯수가 동일하면 .. 2023. 2. 18.