알고리즘

    브루트 포스

    컴퓨터 과학 및 알고리즘 설계 영역에서 복잡한 문제에 대한 다양한 해결책이 있다. 여러가지 복잡하고 정교한 알고리즘이 있지만 더 직접적인 접근 방식을 취하는 알고리즘인 브루트 포스 알고리즘이 있다. Brute Force Algorithm Brute Force는 Brute(무식한)과 Force(힘)이 합쳐진 말로 힘으로 무식하게 해결하는 것을 말한다. 브루트 포스 알고리즘은 완전탐색 알고리즘이라고도 불리며, 모든 경우의 수를 다 확인하여 문제를 해결하는 알고리즘이다. 즉, 문제를 해결할 때까지 가능한 모든 입력 조합 또는 순열을 고려하여 간단하고 체계적인 접근 방식을 따른다. 단순성과 직관성이 특징으로 구현하기 쉽다. 장점 1. 단순성: 무차별 대입 알고리즘은 가능한 모든 솔루션을 체계적으로 반복하기 때문..

    조합

    조합 n개의 원소를 가진 임의의 집합에서 순서가 없이 r개를 선택하는 것 구현 아이디어 하나의 원소를 선택 vs 하나의 원소를 선택하지 않음 선택하는 경우 : n개의 원소 중에서 1개를 뽑는다고 생각 → r-1개를 뽑는다. 선택하지 않는 경우 : n개의 원소 중에서 1개를 뽑지 않는다고 생각 → r개를 뽑는다. 구현 조합의 경우의 수 구하기 public class Combination{ static int combination(int n, int r){ if(n==r || r==0) return 1; return combination(n-1, r-1) + combination(n-1, r); } } 조합으로 나온 원소 구하기 static void combination(int[] list, boolean[..

    임시변수 없이 변수 바꾸기

    두 개의 정수형 변수의 값을 서로 바꾸고자 할 때는 임시변수를 사용하여 두 개의 값을 바꿔주는 경우가 대부분이다. int a = 3; int b = 5; int temp = a; a = b; b = temp;그렇다면 만약 temp를 사용하지 않고 두 개의 정수를 바꿀 수는 없을까? 정답은 바꿀 수 있다!! 단, 오직 두 개의 정수형 변수만 사용하여 바꾸어야 한다. 방법은 다음과 같다. int a = 3; int b = 5; a = a + b; b = a - b; a = a - b;처음 보면 이해가 잘 안될 수도 있다. a = a + b 는 a의 값과 b의 값의 합이다. 여기서 b를 빼면 a 만 남는다. 즉, b = a - b 를 하면 b에 기존의 a 값이 대입이 된다. 그리고 a = a+b 에서 b를 다..