hanorang2   5년 전

각각의 문자열에 대해서 점괘판의 좌우, 위아래 string과 비교해서 그 중 가장 큰 값을 출력하도록 하였습니다!

비교하는 과정에서는 동적계획법을 사용해서 공통 부분 문자열을 구했는데요, 자꾸 시간초과가 뜨네요 ㅠㅠ

어디를 놓치고 있는 걸까요? 아니면 더 좋은 방법이 있을까요?

kdk8361   5년 전

check 함수를 부르는 횟수가 O(p)고 compare함수 가 O(4n)번 사용될거고

compare함수 자체 시간복잡도가 O(nk)기 때문에 O(4kpn^2)이 걸리겠네요.

그리고 string s를 만들기 위해서 걸리는 시간만 check함수 한번당 O(4n^2)기 때문에

O(4pn^2)이 추가로 소모되겠죠.

거기에 제가 알기로 string을 함수의 인자로 넘기게 되면 깊은 복사가 일어난다고 알고있습니다.

O(kp+4p(n+k))가 추가로 필요하겠네요.

알고리즘은 트라이(trie)를 한번 보시는걸 추천합니다.

댓글을 작성하려면 로그인해야 합니다.