: 제시된 예제를 보면, 별표 외부로 해서 모두 한자리로 되어 있는 것을 확인했다.
지금 현재 s 의 값이 모두 별표보다는 길게 나왔는데
ab*ab
input -> ab 이렇게 나올 경우 어떻게 할 것인가?
즉 pre.size() + tail.size()는 반드시 input 값의 크기보다는 커야 한다는 조건 처리가 있어야 한다.
string.find로 접근한다고 했을 때 문제가 있다.
tail을 구하려고 한다면,
ab*cd 이고,
input -> abdddcdffg 라고 한다면?
어쨋든 find는 cd를 찾는데 패턴에는 맞지 않는다.
find로 하기에는 코드가 번잡해진다 while 문 돌려가면서 iterator 증가하는 코드가 작성될 거다.
substr을 사용하자.
substr(front, cnt) 순으로 하는데
preInput 는 substr(0, pre.size();
tailInput 은 substr(input.size() - tail.size()) 이런식으로 접근하면 된다.
핵심
: 별표를 기준으로 해서 문자를 각각 앞뒤로 잘라내서 진행하는데,
여기서는 ffront 는 a , bback 는 d라고 할 수 있다.
여기서 별표에 문자를 변형해서 일치하는지 안하는지를 확인하는 것인데 문제는 아래의 그림처럼 a'별'd 뿐 아니라.
anes'별'tod 가 올수 있다는 것이다. (별표는 한개만 올수 있다. )
그래서 문제를 어떻게 풀었냐면 별표를 기준으로 해서 string을 substr로 잘라냈다. 별표앞을 sFront , 별표 뒤를 sPost로 해서 비교하는 방식으로 했다.
-> 이렇게 할 경우,,, 65퍼센트에서 틀리게 된다.
string word = "ab*ab";
string input = "ab";
이렇게 되면 어쩔건데.... -> DA가 나온다. SIZE를 고려해야 한다.
-> 진짜 코테를 보는 거라고 생각하고 고심하면서 예외 조건이 뭐가 있을까???
생각을 하면 찾을 수 있지않을까??? 이거를 생각할 수 있는 운이 와야 100점 맞을 수 있다..
- 항상 코드를 작성하기 전에, 예외사항이 있지 않을까란 생각을 해야 함.
- 예제만 보고 있는 그대로 하면 되겠지란 있을 수 없음.
- 내가 모르는 상황이 발생하기도 함.