본문 바로가기

brute Force91

[자바] 백준 27162 - Yacht Dice (java) 문제 : boj27162 필요 알고리즘 개념 많은 조건 분기, 구현, 브루트포스 많은 조건을 분기해줘야 하는 구현문제이다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 한 함수에서 if문으로 모두 처리하게 되면 디버깅이 쉽지 않다. 내 경우엔 클래스로 구성을 나누었다. Pedigree 라는 인터페이스가 있는데, 각 족보를 뜻한다. 내부에 maxScore(int[] arr)만 있고 해당 Pedgree의 구현체로 얻을 수 있는.. 2023. 1. 15.
[자바] 백준 14927 - 전구 끄기 (java) 문제 : boj14927 필요 알고리즘 개념 브루트 포스, 그리디 약간의 브루트 포스 + 그리디가 필요하다. 둘 다 알고리즘이라기보다는 개념적인 부분이라, 구현이 크게 어렵지 않은데 아이디어가 필요한 문제이다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 보통 2차원 문제는 1차원으로 먼저 생각하면 더 쉽게 아이디어를 떠올릴 수 있다. 문제를 간단히 하기 위해 1차원에서만 우선 생각해보자. A. 1차원에서 생각해보자. 선택.. 2023. 1. 6.
[자바] 프로그래머스 - 순서쌍의 개수 (Lv0, Java) 문제 : Programmers-순서쌍의 개수 문제 출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges 필요 알고리즘 개념 브루트포스 n의 크기가 100만밖에 안되므로 그냥 1부터 n까지의 모든 수를 비교해보면 된다. O(n) 수학 (정수론) 좀 더 효율적으로 O(sqrt(n))으로도 풀 수 있다. 이 경우 수학적 지식이 좀 필요하다. 풀이 우선 n의 크기가 100만으로 매우 작으므로 그냥 1부터 n까지의 모든 수를 보면 된다. a를 1부터 n까지 증가시키면서, n%a == 0 이라면 b = n/a 가 되므로 answer을 1 증가시켜주면 된다. 이 경우 O(n)이 걸린다. int answer = 0; for (int i = 1; i 2022. 12. 2.
[자바] 백준 4375 - 1 (java) 문제 : boj4375 필요 알고리즘 개념 브루트포스 풀이1의 경우 BigInteger를 사용해 브루트포스로 푼다. 수학, 정수론 풀이2의 경우 나머지 연산의 특성을 사용해 BigInteger를 사용하지 않고 푼다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 우선 2와 5로 나누어 떨어지지 않는다는 조건이 왜 붙었냐면, 소인수분해시 2와 5가 있을 경우 그 중 작은 수 만큼 수의 낮은 자리수에 0이 생겨서 1로 나누어떨어.. 2022. 11. 26.
[자바] 백준 6131 - 완전 제곱수 (java) 문제 : boj6131 필요 알고리즘 개념 브루트포스 대상으로 가능한 모든 경우를 직접 보면서 확인해주면 된다. 수학 제곱근. 제곱 연산이 필요하다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 정수 A, B에 대해 1 2022. 11. 25.
[자바] 백준 3724 - 표 (java) 문제 : boj3724 필요 알고리즘 개념 큰 수 연산, 브루트포스 문제에서 제시된 방식대로 모든 경우의수를 다 살펴보면 된다. 다만 엄청나게 큰 수 연산이 들어간.. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 주의점은 N과 M의 순서가 상당히 헷갈리게 들어오니 조심하자. 이 문제의 경우 모든 경우를 직접 해보면 된다. 즉, 각 열의 모든 수를 직접 다 곱해보고 비교하면 된다! 그러기 위해서는 대략 (2^31)^1000 .. 2022. 11. 7.
[자바] 백준 13410 - 거꾸로 구구단 (java) 문제 : boj13410 필요 알고리즘 개념 브루트포스 단과 항을 입력받아 구구단을 진행해 수를 구하고, 해당 수를 모두 뒤집은 것 중 가장 큰 값을 찾아야 한다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 8단의 5개 항의 값은 8, 16, 24, 32, 40 이다. 이걸 전부 뒤집으면 8, 61, 42, 23, 4 이다.이 중 가장 큰 값은 61이므로 61을 출력해주면 답이 된다. 즉, N과 K를 입력으로 받아서 기본.. 2022. 11. 2.
[자바] 백준 14912 - 숫자 빈도수 (java) 문제 : boj14912 필요 알고리즘 개념 브루트포스 모든 경우의수를 확인해보면 풀 수 있는 문제이다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 최대 n은 10만이고, 최대 자리수는 6개이다. 따라서 1부터 n까지 모든 자리수를 하나씩 비교해보더라도 O(N)이면 되므로 브루트포스로 모든 경우를 확인해주면 된다. 각 자리수를 모두 확인하려면 우선 편한 방법으로는 1부터 n까지 각 수를 String으로 변경해준 뒤 Str.. 2022. 9. 29.
[자바] 백준 4096 - 팰린드로미터 (java) 문제 : boj4096 필요 알고리즘 개념 브루트포스 모든 경우의 수를 확인해보는 브루트포스 알고리즘으로 풀 수 있는 문제이다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 팰린드롬 판정 방법 우선 팰린드롬인지 판정하는 방법부터 알아보자. "1231321"를 가지고 생각해보자. 1. 우선 길이를 가지고 반반으로 나눈다. 이 때 홀수라면 정중앙은 무시하면 된다. 2. 그리고 반반으로 나뉜 부분중 아무거나 하나를 돌린다. (1.. 2022. 9. 10.
[자바] 백준 1174 - 줄어드는 수 (java) 문제 : boj1174 필요 알고리즘 개념 브루트포스 모든 경우의 수를 살펴보는 브루트포스 개념을 알고 있어야 한다. 브루트포스 글 백트래킹 브루트포스에서 모든 경우를 볼 때, 중간에 답이 될 가능성이 없는 부분을 제외시켜 시간복잡도를 낮추는 백트래킹 개념에 대해 알고 있어야 한다. 백트래킹 글 ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 이거.. 완전히 동일한 문제가 있다. 그러니 백준 1038 - 감소하는 수 문제 풀이.. 2022. 9. 5.