본문 바로가기

브루트 포스5

[자바] 백준 24891 - 단어 마방진 (java) 목차 문제 : boj24891 필요 알고리즘 브루트 포스 그냥 모든 경우를 다 확인해보면 된다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 최악의 경우가 20개의 단어 중 5개를 순서대로 뽑는 경우이므로 20P5 = 20*19*18*17*16 번 정도면 모든 경우를 다 확인할 수 있다. 그리고 마방진임을 확인하는데에는 최대 L^2 이면 확인 가능하다. 결론적으로 그냥 브루트포스로 모든 경우를 확인하면 되는 문제이다. O(.. 2024. 3. 20.
[자바] 백준 10448 - 유레카 이론 (java) 목차 문제 : boj10448 필요 알고리즘 브루트 포스 단순히 모든 경우를 살펴보는 것으로 풀 수 있는 문제이다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 문제를 약간 바꿔서 생각해보자. X개의 숫자가 주어진다. 그 중 3개를 합한 값이 N인 경우가 있다면 1, 없다면 0을 출력하는 문제이다. 이 때, 단순하게 3개의 수를 골라 합쳐보면서 정말 있는지 없는지 확인해본다고 하자. 이 경우 시간 복잡도는 O(X^3) 이고.. 2023. 12. 1.
[자바] 백준 2190 - 점 고르기 2 (java) 목차 문제 : boj2190 필요 알고리즘 브루트 포스 (brute force) 약간의 아이디어만 더해주면 그냥 브루트포스로 풀 수 있다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 보통 2차원인 문제는 우선 1차원으로 생각해보면 접근하기 쉬운 경우가 많다. 이 경우에도 그냥 직선에 N개의 x좌표가 주어진다고 하고, 길이 A 짜리 막대로 가장 많은 점을 포함한다고 생각해보자. 이 경우 가장 간단한 방법은 N개의 점을 시작.. 2023. 11. 25.
[자바] 백준 14927 - 전구 끄기 (java) 문제 : boj14927 필요 알고리즘 개념 브루트 포스, 그리디 약간의 브루트 포스 + 그리디가 필요하다. 둘 다 알고리즘이라기보다는 개념적인 부분이라, 구현이 크게 어렵지 않은데 아이디어가 필요한 문제이다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 보통 2차원 문제는 1차원으로 먼저 생각하면 더 쉽게 아이디어를 떠올릴 수 있다. 문제를 간단히 하기 위해 1차원에서만 우선 생각해보자. A. 1차원에서 생각해보자. 선택.. 2023. 1. 6.
백준 8807 자바 - Przedziały (BOJ 8807 JAVA) 문제 : boj8807 1. 다음과 같은 입력을 생각해보자. 1 5 1 2 2 2 3 5 7 8 10 10 이 문제의 경우 만약 모든 범위를 한 선에 겹쳐그릴 수 있다면 쉽게 답을 구할 수 있을 것이다. 그럼 어떻게 각 범위를 합칠 수 있을지 생각해보면 된다. 우선 가장 간단한 방식으로, 모든 범위에 해당하는 배열을 만들고 입력을 받으며 범위를 채운 후, 마지막에 모든 범위에 대해 확인해서 개수를 세는걸 생각할 수 있다. 다만 이 문제의 경우 이렇게되면 모든 범위가 -10억~+10억이 되므로 모든 범위 확인만해도 대략 20초정도 걸린다. 2. 다른 방법을 생각해보자. 사실 각 A,B에 대해 범위를 순회만 해도 최대 20억번 해야하므로 시간초과가 확실하다. 따라서 아예 다른 방식으로 생각해봐야 한다. OR.. 2022. 1. 16.