문제설명입력 & 출력나의 풀이 문제를 이해하는 데 시간이 조금 걸렸습니다. 이번 "분해합"문제는 주어진 수의 가장 작은 생성자를 찾는 문제입니다. 문제에 입력이 216으로 주어졌을 때 해당 수의 가장 작은 생성자를 찾는 문제입니다. 216의 생성자는 198,207,215 가 있는데 이 중에서 가장 작은 198이 출력이 나와야합니다. "가장 작은"이라는 말에서 알 수 있듯이 최솟값을 찾기 위하여 1부터 입력받은 N까지 모두 대입하면서 분해합이 입력이랑 같았지만 그 값을 반환하면 되는 문제입니다. 즉 브루트 포스 알고리즘 방식입니다. 198 = ①198 + ② 1 + ③ 9 + ④ 8 = 216 207 = ① 207 + ② 2 + ③ 0 + ④ 7 = 216먼저 분해합을 찾는 함수 findAnalyzeSu..
문제설명입력 & 출력나의 풀이 워낙 유명한 문제입니다. 주의해야 할 점은 정상에 도착하면 더 이상 미끄러지지 않는다는 것입니다. 예제 입력 2, 1, 5)day 1 : 2미터 올라가고 1미터 떨어짐 ➡️ 1 미터 day 2 : 2미터 올라가고 1미터 떨어짐 ➡️ 2 미터 day 3 : 2미터 올라가고 1미터 떨어짐 ➡️ 3미터 day 4 : 2미터 올라가고 정상 도착 ➡️ 5 미터 예제 입력 5, 1, 6)day 1 : 5미터 올라가고 1미터 떨어짐 ➡️ 4 미터day 2 : 5미터 올라가는 동안 이미 정상도착 ➡️ 9 미터 위와 같기 때문에 단순히 V / A-B를 하면 안 됩니다. 이걸 정리해서 문제를 접근하는 방법은 다음과 같습니다.하루 동안 순수하게 올라가는 높이: 𝐴 − ..
▶ BufferedReader와 브루트 포스 알고리즘을 활용한 간단한 문제가 있어 정리해보고자 합니다. 문제설명입력 & 출력나의 풀이 전체 카드(N)중에서 3개를 고를 수 있는 모든 경우의 수를 구하고, 카드의 합을 구한 뒤, M을 넘지 않는 최댓값을 찾으면 되는 문제입니다. 주어지는 카드의 개수(N)가 최대 100개이므로, 브루트 포스 알고리즘을 사용하여 모든 가능한 조합을 탐색하는 것이 가능합니다. 따라서 3중 for문을 사용하면 손쉽게 풀 수 있는 브루트 포스 알고리즘의 첫 번째 문제였습니다. 풀이 설명을 하자면 빠른 입력을 위해 BufferedReader 클래스를 사용하고, 3중 for문을 사용하여 3개의 카드를 구하고 합을 구해줍니다. 해당 카드의 합의 max값을 구해주는 데 &연산자를 사용하..
한 사람이 단어를 생각하고 다른 사람이 그 단어를 추측하는 만약 "단어 맞추기" 게임을 한다면 추측하는 사람은 가능한 모든 단어를 시도하여 맞출 때까지 계속합니다. 예를 들어 추측하는 사람이 "축구"라는 단어를 맞춰야 할 때, 가능한 모든 단어를 시도하여 "축구"를 찾을 때까지 계속합니다. 이는 이번 포스팅에서 알아볼 브루트 포스 알고리즘의 아이디어와 비슷합니다. 완전 탐색 : 브루트 포스 알고리즘 (Brute Force Algorithm)Brute : 무식한Force : 힘 직역하면, 무식한 힘을 갖는 알고리즘입니다. 단어에서 알 수 있듯이 브루트 포스(Brute Force) 알고리즘은 문제 해결을 위해 가능한 모든 경우의 수를 시도하는 가장 단순하지만 강력한 방법입니다. 완전탐색(Exhausti..