본문 바로가기

문자열

[BOJ] 11653. 소인수분해 (python) https://www.acmicpc.net/problem/11653 11653번: 소인수분해 첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다. www.acmicpc.net 문제 정수 N이 주어졌을 때, 소인수분해하는 프로그램을 작성하시오. 입력 첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다. 출력 N의 소인수분해 결과를 한 줄에 하나씩 오름차순으로 출력한다. N이 1인 경우 아무것도 출력하지 않는다. 풀이 없겠지만 혹시 블로그 애독자를 위해 꾸준히 알고리즘 풀기..! 1. 소인수분해를 위해 2부터 나눠본다. ( 2 -> 3 -> 4 -> 5 순으로!) 2. 나누어 떨어진다면, 해당 값을 출력하고 현재 값을 나누어준다! 3. 초기 값이 1이 될 떄까지 계쏙해서 나누.. 더보기
Rabin-Karp String Matching Algorithm, 라빈-카프 알고리즘 https://www.youtube.com/watch?v=qQ8vS2btsxI 이 영상을 참고했다! 라빈-카프 알고리즘은 String을 비교하여 긴 문자열에 짧은 문자열이 포함되어 있는지 확인하는 알고리즘이다. brute force 방법으로, 문자열을 한칸씩 이동하며 모두 비교하는 방법부터 보이어-무어, KMP등 여러가지 방법을 공부했다. 라빈-카프의 핵심은, Hash function이다. 각 문자열의 값을 이렇게 할당한다고 했을 때, 'AAA' 의 값을 1 + 1 + 1 = 3으로 정의한다. 이렇게 해당 문자열의 값을 return해주는 함수가 hash 함수이다. (예시는 단순한 해시함수이다!) 'AAAAAAB' 안에 'AAB'가 존재하는지 확인하기 위해서, 'AAB'를 hash 함수에 넣고, 4라는 값.. 더보기