http://boj.kr/b40f938f080d4731832f9de2739cd645
코드입니다. 1013번 contact문제이고 정규식에 관한 문제인데 상태천이도 그려서 간단하게 짜서 냈더니 틀렸습니다
1번점이 시작이고 문자열이 끝나고 났을 때 7번 노드 또는 1번 노드에 있어야 가능한 경우입니다.
예를 들면 1번 노드에서 현재 문자가 1이면 3번으로, 0이면 2번으로 이동하는 식입니다.
아래 상태천이도 첨부합니다. 어디가 틀렸나요 ㅠㅠ
http://boj.kr/b40f938f080d4731832f9de2739cd645
코드입니다. 1013번 contact문제이고 정규식에 관한 문제인데 상태천이도 그려서 간단하게 짜서 냈더니 틀렸습니다
1번점이 시작이고 문자열이 끝나고 났을 때 7번 노드 또는 1번 노드에 있어야 가능한 경우입니다.
예를 들면 1번 노드에서 현재 문자가 1이면 3번으로, 0이면 2번으로 이동하는 식입니다.
아래 상태천이도 첨부합니다. 어디가 틀렸나요 ㅠㅠ
대충봤는데 7에서 1넣었을때 7,1 둘다 되는거땜에 그런거 아님?
둘 다 되는건 1+라 가능하긴 한데 간선을 잘못연결해서 그런걸로 해결됬습니다
그림을 애초에 잘못 그렸었네요.... 7번 간선에서 1입력받아서 3으로 바로가거나 6번간선에서 1로 가는 경로를 하나 더 추가하면 되네요
FSM 그릴 때 한 입력은 선 하나만 있어야됨
fsm이 뭔지는 모르겠지만 일단 저 그림에서는 출력이 둘로 나와도 or로 생각하고 그렸고 코드로 짤 때도 || 로 연결하기 때문에 오류는 없을 것 같에요.
6번 정점에 간선 하나 더 추가시켜서 맞았습니다
https://cyberzhg.github.io/toolbox/min_dfa?regex=KDEwMCsxK3wwMSkr
이게 제대로 DFA 그린거임. 간선 추가한다고 될게 아님
dfa가 뭔지 모르는 사람한테 dfa는 이렇게 그려야 함 이라고 해봤자 써먹지못하는데 제가 그린대로 그리면 어떤 문제가 발생하는지를 알려주셔야죠 그럴꺼면
봐주신건 너무나 감사하지만
fsm 그리는거 보니까 학교에서 컴파일러 수업 들은거 아니냐 그리고 모르면 구글링하셈
DFA 그리려면 NFA 그려야되고, NFA 그리려면 thompson's construction algorithm 써서 regex->NFA 그려야하는데 이걸 내가 댓글로 어케 다 설명하니 난 너가 다 알고 있는줄 알았지