S. Kevin 창고

문제 링크 : https://www.acmicpc.net/problem/1013


문제는 링크 참고.




풀이.


이 문제는 각 문자마다 다음에 뭐가 올 수 있는지를 분석하여서도 풀 수 있다.


하지만 다음과 같이 그래프를 그려 각 문자를 검사하는 상황마다 인덱스를 매겨서 쉽게 풀 수도 있다.



(100+1+ | 01)+


패턴에 맞는 문자열을 위 그래프를 따라가면서 검사해보면 이 그래프가 왜 그려졌는지 쉽게 알 수 있다.


여기서 빨간색 원은 마지막으로 문자열을 검색했을 때 상태가 0번,4번,5번일 경우 맞는 문자열의 상태의 번호를 표시한다.


ex1)

문자열 : 10011001 은 상태가 0→1→2→3→4→5→6→3→4 로 끝나므로, 맞는 문자열이다.


ex2)

문자열 : 101101 은 상태가 0→1→2→8(정의되지 않은 상태) 이므로, 틀린 문자열이다.


위의 그래프를 테이블로 만들어서 str을 검사하면서 돌리면 된다.







'프로그래밍 > 알고리즘' 카테고리의 다른 글

[BOJ] 1032번. 명령 프롬프트  (0) 2017.12.19
[BOJ] 1015번. 수열 정렬  (0) 2017.12.18
[BOJ] 1012번. 유기농 배추  (0) 2017.12.04
[BOJ] 1010번. 다리 놓기  (0) 2017.11.27
[BOJ] 1463번. 1로 만들기  (0) 2017.11.26