2941번 - 크로아티아 알파벳
string.find() 함수가 반환값이 없을 때 string::npos를 반환한다는 것을 이용해서 짠 코드입니다.
먼저 주어진 문자열의 맨 앞에서부터 조건에 맞는 문자열들이 있는지 확인 후, 없으면 맨 앞의 한 글자씩 없애나가면서 카운팅을 하는 원리로 짰습니다.
제 게시글 이전에 있던 모든 반례를 입력해도 잘 카운팅 됩니다.
저를 구원해주세요..
위 코드 논리를 보니까 맨 앞을 비교해서 조건에 만족하지 않으면 맨 앞을 지우고만족하는게 있으면 지우는 방식인데
ljldz=j 같은 경우
맨 앞 lj때문에 else if문으로 갑니다. 그러나 else if 순서상 dz=을 먼저 찾겠네요. 그래서 맨앞이 아닌 중간 값이 지워져 반례가 생깁니다!
오.. else-if의 순서가 의심이 가긴 했는데, 반례를 선뜻 생각해내지 못해서 낑낑대고 있었어요
되도록이면 if-else를 안쓰는 방법을 고려해봐야겠네요
시간내주셔서 감사합니다!
댓글을 작성하려면 로그인해야 합니다.
hus5522 4년 전
string.find() 함수가 반환값이 없을 때 string::npos를 반환한다는 것을 이용해서 짠 코드입니다.
먼저 주어진 문자열의 맨 앞에서부터 조건에 맞는 문자열들이 있는지 확인 후, 없으면 맨 앞의 한 글자씩 없애나가면서 카운팅을 하는 원리로 짰습니다.
제 게시글 이전에 있던 모든 반례를 입력해도 잘 카운팅 됩니다.
저를 구원해주세요..