문자열(2)
-
[문자열][시간 초과]HABIT 말장난
1. 완전 탐색 이 문제는 주어진 문자열 입력에 대해 중복된 부분 문자열의 개수를 센다음 k개 이상의 중복 문자열 중에서 가장 긴 부분 문자열을 찾는 문제이다. 하지만 부분 문자열을 전부 만들어서 카운트하면 시간안에 수행이 불가능하다. 2. 공통 접두사의 최대 길이 사용 접미사 배열을 만들고 공통 접두사의 최대 길이를 계산하면 시간안에 해결할 수 있다. 이 때 중요한 것은 k개를 더한것과 비교하는 것이다. 이는 k번째 접미사와 접두사가 일치하지않으면 0이되기 때문에 이는 완활히 작동된다. 다음은 책에있는 코드이다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39..
2021.02.03 -
[문자열] JAEHASAFE 재하의 금고
1. 문자열 이 문제는 KMP알고리즘을 사용하면 간단하게 풀 수 있다. 아래 코드는 좀 복잡하게 구현하였는데, 사실 첫 상태와 비교하는게 아니라 이전 상태랑 비교하면 더 깔끔한 코드가 될 것이다. 또한 A를 시계방향으로 i만큼 돌린 결과가 B일때 이는 B를 반시계방향으로 i만큼 돌린 결과가 A라는 것을 이용하면 더 직관적 일 것이다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 #include #include #include usi..
2021.02.02