9996 - 한국이 그리울 때 서버에 접속하지

phoenixKim·2022년 5월 19일
0

백준 알고리즘

목록 보기
28/174
post-thumbnail
  • 240816 다시풀기

수정본 240816

1번. 어떻게 접근할건가?

: 제시된 예제를 보면, 별표 외부로 해서 모두 한자리로 되어 있는 것을 확인했다.

  • 그런데 이러한 상황도 있지 않을까? 란 생각을 해야 한다.
    abc*df

2번. 생각해볼거

지금 현재 s 의 값이 모두 별표보다는 길게 나왔는데
ab*ab
input -> ab 이렇게 나올 경우 어떻게 할 것인가?

즉 pre.size() + tail.size()는 반드시 input 값의 크기보다는 커야 한다는 조건 처리가 있어야 한다.

3번. 어떤 함수 사용할것인가?

  • 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()) 이런식으로 접근하면 된다.


최근 풀이 : 240305

  • 핵심
    : 별표를 기준으로 해서 문자를 각각 앞뒤로 잘라내서 진행하는데,
    여기서는 ffront 는 a , bback 는 d라고 할 수 있다.
    여기서 별표에 문자를 변형해서 일치하는지 안하는지를 확인하는 것인데 문제는 아래의 그림처럼 a'별'd 뿐 아니라.
    anes'별'tod 가 올수 있다는 것이다. (별표는 한개만 올수 있다. )

  • 그래서 문제를 어떻게 풀었냐면 별표를 기준으로 해서 string을 substr로 잘라냈다. 별표앞을 sFront , 별표 뒤를 sPost로 해서 비교하는 방식으로 했다.
    -> 이렇게 할 경우,,, 65퍼센트에서 틀리게 된다.

반례 240521

string word = "ab*ab";
string input = "ab";
이렇게 되면 어쩔건데.... -> DA가 나온다. SIZE를 고려해야 한다.

-> 진짜 코테를 보는 거라고 생각하고 고심하면서 예외 조건이 뭐가 있을까???
생각을 하면 찾을 수 있지않을까??? 이거를 생각할 수 있는 운이 와야 100점 맞을 수 있다..

  • 반례 찾기가 어려운데, size / min / max 를 가지고 생각할 수 있다고 함.
    : abab vs ab의 경우 : NE 가 나와야 한다.
    : ab
    ab vs abab의 경우 : DA가 나와야 한다.
    즉 여기서는 아래의 조건과 같이 size에 대한 조건 처리를 통해 문제를 통과했다.

최근 문제 풀이

  • 68퍼센트에서 틀림.

개선할 점.

  • 항상 코드를 작성하기 전에, 예외사항이 있지 않을까란 생각을 해야 함.
  • 예제만 보고 있는 그대로 하면 되겠지란 있을 수 없음.
  • 내가 모르는 상황이 발생하기도 함.
  • 핵심
  • ad 다음에 확인하는 문자열이 오는데, 만약에 ad 보다 길이가 작은 것이
    온다면 위의 프로세스를 진행할 필요가 있을까?
profile
🔥🔥🔥

0개의 댓글

관련 채용 정보