본문 바로가기

알고리즘

(15)
Base64 Encoder & Decoder (암호화, 복호화) ktko.tistory.com/entry/JAVA-BASE64-%EC%9D%B8%EC%BD%94%EB%94%A9-%EB%94%94%EC%BD%94%EB%94%A9%ED%95%98%EA%B8%B0 fruitdev.tistory.com/79 Base 64에는 어떤 문자와 기호를 쓰느냐에 따라 여러 변종이 있지만, 잘 알려진 것은 모두 처음 62개는 알파벳 A-Z, a-z와 0-9를 사용하고 있으며 마지막 두 개를 어떤 기호를 쓰느냐의 차이만 있다. 인코딩된 문자열은 알파벳 대소문자와 숫자, 그리고 "+", "/" 기호 64개로 이루어지며, "="는 끝을 알리는 코드로 쓰인다. 우선 24비트 버퍼에 위쪽(MSB)부터 한 바이트씩 세 바이트를 집어넣는다. 그리고 남은 바이트가 3바이트 미만이라면, 버퍼의 남은 ..
1928. Base64 Decoder 보호되어 있는 글입니다.
탐색 완전탐색/전체탐색(exhaustive search) 가능한 모든 경우의 수를 모두 탐색하면서 요구조건에 충족되는 결과만을 가져온다. 1. Brute Force : for문과 if문을 이용하여 처음부터 끝까지 탐색하는 방법 2. 비트마스크 3. 순열 : 순열의 시간 복잡도는 O(N!) 4. 백트래킹 5. BFS : 그래프 이용 6. 재귀 브루트포스(brute-force search) 완전탐색 알고리즘. => 예외 없이 100%의 확률로 정답만을 출력 가능 문제 : 백준 덩치, 블랙잭, 분해합 * 암호학의 브루트 포스(brute force attack, 무차별 대입 공격)은 특정한 암호를 풀기 위해 가능한 모든 값을 대입하는 것을 의미 선형 구조를 모두 탐색 - 순차 탐색 비선형 구조를 모두 탐색 - BFS..
백준 13단계 브루트 포스 - 2798 블랙잭 N장의 카드 중 3장을 중복없이 뽑는 모든 경우의 수를 검사함 ex) N=10일때 => 배열의 범위는 0~9 i=0, j=1, k=2~9 i=0, j=2, k=3~9 ... i=0, j=8, k=9 i=1, j=2, k=3~9 ... i=6, j=7, k=8~9 i=7, j=9, k=9 이 모든 경우에서 뽑아준 3개의 숫자들이 모두 M보다 작을 경우(한 번 걸러주는 것임) sum에 이 3개 숫자의 합을 담아줌 이 때 sum에 담긴 숫자가 M보다 작고 max보다 클 경우 티 값을 max에 담아줌 => max를 출력하면 M보다 작은 최대값인 3개 숫자의 합이 출력된다
백준 13단계 브루트 포스 - 7568 덩치 몸무게, 키 모두 나보다 커야 나보다 덩치가 크다고 함 따라서 나를 기준으로(int i) 모든 이들을 검사(int j)해 나보다 덩치가 큰 사람의 수(int count)를 센다 제일 덩치가 큰 사람의 등수는 1등이므므로 count의 초기값은 1이고 i가 하나씩 증가할때마다 새로 세줘야 하므로 rank 배열에 값을 저장한 후, j for문이 시작할때마다 초기값 1로 돌려준다 => rank[i]에는 i번째 사람의 등수가 담김
백준 11단계 재귀 - 10870 피보나치 5
백준 11단계 재귀 - 10872 팩토리얼