11개의 댓글이 있습니다.
-
-
Being -
어떤 문제일 지 느낌이 옵니다. 제 추측은:
input string과 output string이 있고, input string에 적당한 조작을 가해서 output string을 만들어야 합니다.
이 때 input string은 sequence of characters 로 이해하여, 이 글자들을 앞에서부터 적당히 스택에 push/pop 함으로써 어떤 string을 만들 수 있습니다.
이 때 stack에 넣고 빼는 조작을 어떤 sequence (e.g. <+, +, -, +, -, ->)로 나타내었을 때, 가능한 모든 조작 sequence들 중에 output string을 만들 수 있는 것은 몇 개인가?
인 것 같습니다.
15년 전 link
-
-
-
helloneo -
이런 문제가 있네요.. -_-
http://icpcres.ecs.baylor.edu/onlinejudge/external/7/732.html
15년 전 link
-
-
-
JongMan -
흠, 일단 카탈란 넘버니까 티피컬하게..
original string 을 A, mapped string 을 B 로 둘 때 임의의 A 의 substring 에서 B 의 substring 으로 매핑하는 경우의 수를 구해서 O(n^4) 로 풀 수 있겠죠.
C[i,j,k] = A[i..j] 를 B[k..k+(j-i+1)] 로 변환하는 방법의 수. 이 때, A[j] 가 B 의 어느 위치에 갈 것인가를 다 돌면서 각 경우의 수를 더해주면 됩니다. 따라서 O(n^4)
이것보다 빠른 방법이 있다고 제 맘속의 목소리가 말하고 있는데 사실 잘 몰겠네요.. -.-;;
15년 전 link
-
-
정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
leedohyun
문자열이 하나 주어지고요.
Stack을 이용해서 또 다른 문자열로 변환을 시킵니다.
이 때 결과 문자열로 바뀔 수 있는 Stack의 Operation 경우의 수를 구하는 문제입니다.
문자열의 길이가 수 천개가 된다고 하면 어떻게 풀어야 할까요?
전, Backtracking을 생각했는데요.
그 보다 더 Smart한 방법이 있는지 궁금하네요.
15년 전