lunaksj   3년 전

안녕하세요, 

예제의 입력, 게시판의 반례들, 대회의 테스트 입력값등 여러가지 테스트를 해보았으나 해당 테스트들은 모두 통과하였고, 나름대로 여러가지 예제로 테스트도 진행하였으나 도저히 반례를 찾지 못하여 질문글을 올리게 되었습니다.

제가 짠 로직은, 

[1]. 크로아티아 알파벳인지 여부를 검사하기위한 리스트 (croatiaAlpha)

[2]. 크로아티아 알파벳의 첫 글자와 해당 글자로시작되는경우 길이를 최대 몇까지 봐야하는지 저장한 딕셔너리 (mark)

가 있으며, 입력값을 순차적으로 char하나씩 읽으면서 검사하게됩니다.

예를 들어 dz=dc 의 경우,

첫 캐릭터 d가 크로아티아 알파벳일 가능성이 있으므로, [2]에서 최대 길이 3까지 체크를 하라는 정보를 읽어옵니다.

index = 2인 dz=까지 읽게되면 croatiaAlpha 리스트에 있는 글자이므로, 그위치까지는 하나의 알파벳으로 간주하고,  다음에 알파벳을 읽을 인덱스 = 3이 될수있도록 처리합니다.

index = 3인 경우 마찬가지로 d로 시작하므로 크로아티아 알파벳의 가능성이 있고, [2]에서 최대 길이 3까지 체크하라는 정보를 읽어오게되지만,

남은 문자열이 dc 2밖에 없어서 3까지 체크를 하면 index의 범위를 넘어가게되므로 이런경우 체크할 길이를 2로 조정한다음 다시 검사를 하게됩니다.

이경우 dc는 크로아티아 알파벳이 아니므로 첫번째 처럼 인덱스를 옮겨주지 않고, 그냥 다음 인덱스 = 4를 다시 체크하도록 조정됩니다.

제가 짠 로직에 문제가 있다면, 어떤 부분이 문제가 될 수 있을지, 어떤 것이 반례가 될 수 있을지 도움을 구합니다.

감사합니다.

paraworld   3년 전

로직의 문제는 모르겠지만, 너무 고생입니다. 하나하나 비교하기보다는 주어진 크로아티아 알파벳 자체를 뭉뚱그려서 표현하는 것이 훨씬 편할거에요.

lunaksj   3년 전

안녕하세요,^^ 시간내어 답변 달아주셔서 감사드립니다.

댓글을 작성하려면 로그인해야 합니다.