kk5068   2년 전

예시를 다 해봐도 작동은 잘하는데 왜 시간초과가 자꾸 뜰까요 ㅠ

sys.stdin.readline() 으로 해봐도 시간초과가 자꾸나네요 ㅠ

hwpark12   2년 전

입력받은 mystring 안에 있는 글자 하나하나에 대해 count 함수를 쓰게 되면 최악의 경우 1000000^2 만큼의 계산이 필요해서 시간초과가 납니다.

mystring = "azzzzz" 일 때를 예로 들면 이미 한 번 계산한 "z"의 개수를 5번이나 더 계산하게 되어 효율이 떨어지는 것입니다.

kk5068   2년 전

중복되는 단어는 세지않도록 해봤는데 그래도 시간초과가 나타나는 이유는 뭘까요 ㅠㅠ

hwpark12   2년 전

mystring = "zzzzzaabbccddeeffgg ... xxyy" 인 경우를 생각해보면 꼭 가장 많이 나온 경우만을 중복해서 세는 것은 아닙니다.

위 예시에선 가장 많이 나오는 z를 중복해서 세진 않겠지만 a~y 를 계속 세야 해서 비효율적입니다.

꼭 mystring을 따라가며 max를 찾을 필요는 없습니다.

알파벳은 26자밖에 없다는 점을 이용하면 어떨까요?

kk5068   2년 전

감사합니다!!!ㅠㅠㅠ 가장 많이 나온 경우가 아닌 상황일때 중복해서 세지 않도록 처리해줬더니 성공했어요 ㅠㅠㅠㅠ 알파벳이 26자밖에 없다는점은 무슨뜻인지 아직 잘 이해 못했지만 감사합니다 ㅠㅠㅠ

hwpark12   2년 전

알파벳이 26자밖에 없다는 것은 a~z에 대해 count 함수를 총 26번만 쓰면 max값을 구할 수 있다는 의미였습니다. 축하드립니다!

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