matt2012   1년 전

게시판에 있는 모든 테스트 케이스를 돌려봤는데 틀린 점이 없는것 같습니다. 반례나 제 코드에서 잘못된 점이 있으시면 알려주시면 정말 감사하겠습니다.

푼 방법은 strcmp 함수를 이용하여 ZYX ZYXY ZYXYA 같은 경우에서 만약 ZYX 처럼 겹치는 부분이 있을 때에, 겹치는 부분의 첫 부분(Z)와 추가되는 부분(Y나 A)의 아스키 코드를 비교해서 제일 먼저 출력해야 하는 줄을 찾고, 그 줄에서 알파벳이 감소하는 부분까지만 출력을 합니다. 그리고 그 끝나는 지점을 각각 배열에 저장해두고 다음번에 만약 그 줄을 호출해야 하면 그 부분부터 호출을 하는 로직을 짜보았습니다.

만약 겹치는 부분이 없으면 ABC DEF 같은 경우 strcmp를 통해 ABC 가 더 먼저임을 확인 할 수 있으므로, A를 출력합니다. 다음번엔 A가 없는채로 BC와 DEF를 비교합니다. 이렇게 하다가 만약 C를 지나면 그 줄은 이제 끝이므로 호출이 되면 안되므로, 다음번에 그 줄이 만약 호출되면 모든 알파벳보다 큰 아스키코드 값인 127을 저장해두고, 127을 호출함으로써 만약 그 줄이 호출이 되도 무시가 되게끔 코드를 짯습니다.

문자를 하나씩 출력하면서 t값을 1씩 추가해주고, 초기에 모든 문자열 크기의 합인 sum보다 t가 크거나 같아지면 코드가 종료되게 while을 구성했습니다.

정석적인 풀이인지는 잘 모르겠으나, 테스트 케이스 30개 넘게 모두 다 정상적으로 돌아갑니다. 문제점을 알려주시면 정말정말 감사하겠습니다.

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