먼저 문제점은 dfs() 내부의 for문 안에 'A'~str[n-1]+1 까지에서 str[n-1]+1 이 문제가 됩니다.
질문자께서 str[n-1]+1까지 한 이유는 사전순 빠를려면 다음문자가 최대한 작은게 와야하고, 'A'~그전문자까지 중 덜 완성된게 있다면 그걸쓰고 아니면 new character를 쓰게 되는데 new character를 쓰게 된다면 모두 같은 상황이니 가장 작은 걸 쓰는 것을 목표로 두고 설정한 거 같습니다.
비슷한 논리지만, 오류가 있습니다.
'A'~str[n-1]중에 가장 큰 문자가 str[n-1]이 아닐수도 있습니다. 즉, for 문들어가기전에
str[0]~str[n-1]중 가장 큰 문자열을 찾은뒤 그 문자열+1 까지 조사하면 되겠습니다.
하지만 그걸 고친다면 오답은 면할수있지만, 64~80의 분포에 대한 시간초과를 면할 순 없어서 그걸 생각 해 보시면 될거 같습니다.
sehun 8년 전
안녕하세요!
1352 문제를 제가 파악을 잘 못 한 것인지, 검증할 데이터도 만들기 어렵고..
질문드립니다.
아래처럼 출력하면 되는게 아닌가요.ㅜㅜ
[sehun@eileen study]$ ./a.out
6
ABCBCC
[sehun@eileen study]$ ./a.out
10
ABCDBCCDDD
[sehun@eileen study]$ ./a.out
16
ABCDDEBCCDDEEEEE
[sehun@eileen study]$ ./a.out
100
ABBCCCCDDDDDDDDEEEEEEEEEEEEEEEEFFFFFGFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
[sehun@eileen study]$ ./a.out
8
-1
[sehun@eileen study]$