dksdmssh1212   3년 전

50 15
antarctica
antahellotica
antacafsdrtica
antarngjocbtica
antarnfzojctica
antarnaffuctica
antarnaapoctica
antarnapgoctica
antardsfjoctica
antanapgoctica
antaafsdrctica
antarjhgctica
antarfjhctica
antarfbncttica
antarrtctica
antarbetrectica
antarqreufctica
antarrectica
antarqfjectica
antarafjtica
antarqvawectica
antarqofwyctica
antarvnfjctica
antarqovaeutica
antareufjectica
antarqefjtica
antarqefjectica
antaructica
antarqafdoctica
antarqictica
antarqerjictica
antarqoeictica
antarqeeictica
antarbroctica
antarbuyuoctica
antarbvuroctica
antarbiuyyctica
antarbdsfhctica
antarbquroctica
antarinfjctica
antarirjectica
antariqwctica
antariwyectica
antarigsdvctica
antarijectica
antarqegafdtica
antarqctica
antarqgoeictica
antarqtqtoetica
antarqnuyectica

위 테스트 케이스 답은 30 입니다.

그러나 이 테스트 케이스를 이용하여 특정 코드를 제 비쥬얼 스튜디오에서 넣고 돌려보면

눈대중으로도 5초가 넘어가는데

백준은 시간초과가 안나고 넘어갑니다.

읽어주셔서 감사합니다.

-------------------------------------------------------------------------------------------------------------------------------------------

아래는 제 질문 내용입니다.

제가 이 문제를 해결하고자 짠 논리는 아래와 같습니다.

1) 단어에서 a, b, t, c, i 빼기

2) 각 단어가 배울 수 있는 단어인지 확인하고, 새로 배워야 하는 단어(learn_count)가 몇개 있는지 확인하기

3) 이 단어가 배울 수 있다면, 새로 배워야 하는 문자의 수와, 몇번째 단어인지를 pair로 저장해서 벡터 learn_counts에 push함.

4) 이 벡터의 사이즈 만큼 반복하면서, 매 반복마다 벡터를 sorting함. 그러면 배워야 하는 문자 수가 가장 적은 것을 먼저 배울 것임.

5) 배워야 하는 단어 수가 가장 적은 문자를 만났을 떄(learn_count가 1이라고 가정, 이떄 배우는 문자는 'r'), 다른 아직 보지 않은 문자들도 'r'을 가지고 있나 확인.

만약 'r'을 가지고 있다면 그 단어의 learn_count를 1 감소시키고, 그 단어에서 문자 'r'을 제외함.

6) 다른 문자도 마찬가지. 그리고 다시 4)번으로 돌아가서 다음 인덱스 부터 sorting 한 다음에 똑같은 걸 반복.


4)번 반복문의 마지막에는 result +=1 을 해줌으로서 배운 단어의 개수 + 1 을 해줌.

위와 같은 논리로 짰는데 위의 테스트 케이스가 30이 안나오고 28이 나오더라구요... 

디버깅 해 보니 

a, n, t, c, i는 먼저 배우고

r e b f u q j h g o

이 순서대로 배워서 

antahellotica의 l이라는 단어를 만나서

더이상 못배우고 out..


제 아이디어는 배워야 하는 문자 수가 가장 적게 포함된 것을 먼저 배운다는건데

이 부분에서 오류가 난 것 같습니다.

고수님들의 생각을 좀 여쭙고 싶습니다.

Green55   3년 전

일반적으로 사용되는 로컬 환경에서 테스트 하면 시간이 오래 걸릴 수 있는 요인들이 몇 개 있습니다.

https://ideone.com/vJ6FGG 에서는 올려주신 테스트케이스가 0.27s만에 나오네요.

dksdmssh1212   3년 전

@Green55

아 그렇군요!

감사합니다 :)

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