jhim000   4년 전

안녕하세요 보시다시피 저는  메모리 사용 시간 초 이런건 어떻게 아는지 잘 몰라서 코딩도 막합니다.

뭐가 몇초 걸리고 이런건 어떻게 알아야 할지 모르겠습니다.

프로그래밍 실행시키면 문제는 없지만 시간 초과 문제때문에 숫자만 11번 바꿔서 계속 제출해보고있는데, 시간초과 4번 런타임 오류 7번 정도 뜬 것 같습니다. ㅠㅠ

우선 프로그래밍은  알파벳 대문자이든 소문자이든 전부다 소문자로 인지하게끔  str[i] = 97+j를 했고,

str[i]의 각 자리의 문자가 전체 문장에서 몇번나오는지 str_cnt[i]로 정의 했습니다.

그중에 max값만 골라서 if(str_cnt[i] == max) 인지 맞다면 cnt++하고 str_[cnt-1] = str[i];를 해줌으로써 str_[i]에는 max인 문자열들만 들어가있습니다.

그리고 str_[0]과 나머지가 전부 같으면 max값 출력 하고, 아니면 '?' 출력해서 알고리즘은 맞는 것 같은데, 여기서 문제를 어떻게 해결 할 지  잘 모르겠습니다. 도와주세요 ..

irishw   4년 전

for 범위가 length(백만)이면 

이중for문(for 안에 다른for)쓰면 시간초과 납니다


연산이 1억번 넘으면 안되는데

백만*백만이면 훨씬 넘겠죠?


알파벳 26개가 각각 몇개 나왓나를 저장하는 배열을 활용해서 생각해보세요.


그리고 코드는 가독성을 위해서

65+j, 97+j 같은 표현보다

'a'+j, 'A'+j 같은 표현이 좋을것 같아요

jhim000   4년 전

아... 그렇군요 문제에는 Mississipi 같은 짧은 단어로 되있어서 strlen(str) * strlen(str)이 작다 생각했는데 최대로 보면 백만 곱하기 백만 이네요... 시간 초과 오류 찾아주셔서 감사합니다.

irishw님 말씀대로 알파벳 26개가 각각 몇개 나왓나를 저장하는 배열을 활용해서 코드를 다시 작성 해봤는데 분명히 실행이 잘되고 틀린 부분이 없는것 같은데 이번에는 아에 틀림으로 나오네요 ㅠㅠ 이유가 뭘까요..

irishw   4년 전

출력형태가 첫째줄에 가장많이사용되는 단어를 대문자 형태로 출력해야합니다

jhim000   4년 전

아.. 그렇군요 감사합니다.~~

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