본문 바로가기

PS/BOJ764

[자바] 백준 9024 - 두 수의 합 (java) 문제 : boj9024 필요 알고리즘 개념 정렬, 투 포인터 투 포인터로 해결 가능한 문제이다. 투 포인터 사용을 위해 정렬도 해줘야 한다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 두 정수의 합이 K와 가장 가까운 두 정수의 조합의 수를 찾는 문제이다. 얼핏 K와 동일한 수가 아니라 K와 가장 가까운 두 정수를 찾는거여서 투 포인터로 해결이 안된다고 생각할 수 있다. (예를들어 K=8이고, 두 정수의 합이 8인 경우가.. 2023. 1. 4.
[자바] 백준 2843 - 마블 (java) 문제 : boj2843 필요 알고리즘 개념 오프라인 쿼리 (offline query) 쿼리(질의)의 순서를 변경해서 푸는 아이디어를 생각해낼 수 있어야 한다. 분리 집합 (disjoint set) 분리 집합 개념과, 분리집합에서 집합이 합쳐지는 방향을 강제할 수 있어야 한다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 이 문제에서는 조약돌이 멈추는 정점을 묻는 쿼리와 간선을 지우는 쿼리가 존재한다. 일반적으로 간선을 지우.. 2023. 1. 2.
[자바] 백준 23324 - 어려운 모든 정점 쌍 최단 거리 (java) 문제 : boj23324 필요 알고리즘 개념 분리 집합 (disjoint set) 그룹의 갯수를 알아야 풀 수 있으므로 내 경우엔 분리 집합 알고리즘을 사용했다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 사실 풀이는 금방 생각나긴했지만 가중치가 1과 0이라는 점과, 실제로 탐색을 통해 모든 정점에서 최단 거리를 판단할 경우 무조건 시간초과가 발생하도록 문제가 세팅되었다는 점에서 출제 아이디어가 좋다고 생각했다. 그래프쪽.. 2023. 1. 1.
[자바] 백준 8111 - 0과 1 (java) 문제 : boj8111 필요 알고리즘 개념 수학 나머지 연산의 규칙에 대해 알고 있어야 풀 수 있다. 너비 우선 탐색 (BFS) 수학적으로 풀 방법이 생각났다면, 이후 BFS를 적용해서 구현할 수 있다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 혹시 BFS를 모른다면 이 글을 참고하자. 문제 조건 자체는 그리 어렵지 않다. 테스트 케이스야 동일 동작이니 일단 생각하지 말자. 그냥 1부터 시작해서(시작이 0이면 안된다고 .. 2022. 12. 27.
[자바] 백준 9465 - 스티커 (java) 문제 : boj9465 필요 알고리즘 개념 동적 계획법 (Dynamic Programming, DP) DP로 풀 수 있는 문제이다. DP는 알고리즘이라기 보단 문제 푸는 방식? 같은 거라 생각한다. 어쨌든 어떤건진 미리 알고 풀어야 생각해낼 수 있을 것 같다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 스티커 위치가 아래와 같다고 해보자. A C E B D F 이 때, 각 스티커의 가치 중 음수인 것은 없으므로 결국 우측.. 2022. 12. 21.
[자바] 백준 14588 - Line Friends (Small) (java) 문제 : boj14588 필요 알고리즘 개념 Floyd-warshall 또는 BFS, 그래프 이론 플로이드 와샬 혹은 BFS로 풀 수 있는 그래프 문제이다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 1. 결국 서로간의 최단거리를 구해야 함. 그럼 bfs, 플로이드 와샬, 다익스트라 정도가 생각남. 2. O(N^3) 해도 N이 300이라 매우 충분하므로 대충 구현 쉬운 플로이드 와샬로 진행함. 3. 중요한건 일단 위치정보.. 2022. 12. 21.
[자바] 백준 5341 - Pyramids (java) 문제 : boj5341 필요 알고리즘 개념 구현, 수학 수학적 사고를 약간 포함한 구현문제이다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 피라미드의 바닥 크기가 주어졌을 때, 꼭대기가 1개짜리 블록이라면 총 몇 개의 블록이 사용됬냐고 묻는 문제이다. 즉 n이 주어졌을 때, 1부터 n까지의 합을 출력해주면 된다. 이 때 1부터 n까지 직접 더하려면 너무 오래걸리니 등차수열 합 공식을 사용하면 된다. 1부터 n까지 등차가 .. 2022. 12. 21.
[자바] 백준 26489 - Gum Gum for Jay Jay (java) 문제 : boj26489 필요 알고리즘 개념 구현 문제에서 제시된대로 구현해주면 된다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 입력이 어떻게 들어오는진 상관 없다. 몇 줄인지만 알면 된다! 즉, eof(end of file)을 어떻게 찾는지 알면 풀 수 있다. 자바의 BufferedReader의 경우 eof를 만나면 null을 리턴한다. 따라서 null이 뜰 때 까지 카운팅해주면 된다. 코드 : github impor.. 2022. 12. 21.
[자바] 백준 24082 - Cube (java) 문제 : boj24082 필요 알고리즘 개념 사칙연산, 수학 입출력 연습에 가까운 기본적인 수학 문제이다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 문제에서 주어지는 숫자 x를 입력받은 후, x^3을 출력해주면 된다. 1 2022. 12. 21.
[자바] 백준 26209 - Intercepting Information (java) 문제 : boj26209 필요 알고리즘 개념 구현 문제에서 제시된대로 구현하는 문제이다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 입력으로 받은 각 bit가 0 또는 1로만 이루어져 있으면 S, 아니라면 F를 출력하면 되는 문제이다. 이 때 입력은 0, 1, 9 중에 하나라고 했으므로 9가 하나라도 존재한다면 F를 출력하고, 없었다면 S를 출력해주면 된다. 코드 : github import java.io.Buffered.. 2022. 12. 21.