문자열 검색 구현하려고 하는데,
어찌해야할지 답이 안 나옴.
예를들어서
A AND B OR C <- 이런 조건으로 검색할때랑
A OR B AND C <- 이런 조건으로 검색할때
AND에 우선순위 생기잖아.
그걸 구현하려고 보니 엄청 애매함.
그래서 계산기 소스같은데서 쓰는 산술 후위연산하는걸 응용하려고 했는데,
산술 후위연산은 무리없이 되는데,
이걸 똑같이 논리로 바꾸려니 혼란이 옴. ㅠㅠ
1 - 2 * 3
-> 1 2 3 * -
=> 1 6 - => -5
inText와
A OR B AND C 가 있으면,
-> A B C AND OR (후위표기법 만드는 것 까진 성공)
=> 여기서부터 구현이 막막함 ㅠㅠ
먼저 (inText 검색 B) AND (inText 검색 C) = 결과Bool을 스택에 박아 넣어야하는데,
먼저 들어갔던게 A,B,C라는 스택이 있는건데,
문자열하고 bool이라서 다르잖아.
문자열 스택을 만들면 거기에 Bool을 넣을수가 없고, Bool스택을 만들면 문자열을 넣을수가 없고...
Bool이면 AND와 OR연산 섞인것 들이라 초기값을 뭘해야 할지도 모르겠고...
말하면서도 뭐가 맞는건지 애매해서, 헷갈린다.
문자열 논리연산 검색 구현에 대해서 설명한 곳 없나여? ㅠㅠ
AND 가 우선순위가 더높지 않을까 추측해봄. 뭐 이건 어떻게 정하느냐에 따른건데,, 곱셉 과 덧셈중 곱셈을 먼저 계산하기로 한거처럼
ㄴ 그러니까 그걸 여러개 섞여있을때 연산하는 걸 구현하려는거임. ㅠㅠ 프로그래밍으로 수식계산기 구현하는거 안해본 사람은 크게 당황할거임. 생각외로 복잡한거라서. 뭐가 어렵냐고 생각하겠지만, 해보면 암. 난 후위표기법이라는거 이해하는 것도 한참 걸렸고, 그거 소스도 구해다가 다른 언어로 바꾼게 다임. ㅠㅠ
그렇게 수식 계산기 만드는 수준 까지는 성공했고, 논리연산도 후위표기법 형태로 표기하는거 까진 성공했는데, 이걸 막상 적용하려고보니 생각외로 더 복잡함. ㅠㅠ
얼추 된거 같기도 한데, 아닌거 같기도 하고... 근데 깜빡잊고 NOT을 빼먹었네. 이것도 넣어야되네. ㅠㅠ