strlen은 한번 호출할때마다 문자열의 길이만큼 시간이 걸립니다
문자열의 길이가 고정되어 있는 이상 여러번 호출할 이유가 없죠
1157번 - 단어 공부
이제 시간초과는 해결했는데 왜 틀렸는지 이해가 안됩니다. 반례테스트도 많이 해봤는데 틀렸다고 나오네요....
#include
#include
char voca[1000001];
int count[1000001];
int main()
{
int length = 0, max = 0;
char result = '\0';
scanf("%s", voca);
length = strlen(voca);
for (int i = 0; i < length; i++)
{
if (voca[i] > 90)
{
voca[i] = voca[i] - 32;
}
}//대소문자 변환
if (length == 1)//한글자 짜리
{
printf("%c", voca[0]);
}
for (int j = 0; j < length - 1; j++)
{
for (int k = j + 1; k < length; k++)
{
if (voca[j] == voca[k] && voca[j] != 0)
{
count[j]++;
voca[k] = 0;//테스트 횟수를 줄이기 위해서 0을 대입
}
else if (voca[j] == 0)//비교할 문자가 0이면 즉시 탈출
{
break;
}
}
if (count[j] > max)
{
max = count[j];
result = voca[j];
}
else if (count[j] == max)
{
result = "?";
}
}
printf("%c", result);
return 0;
}
코드는 본문에 올리지 말고 소스 추가 버튼을 눌러서 코드 오리는 곳에 올려주세요.
이 코드는 예제 1번도 제대로 나올 수 없습니다. https://ideone.com/nEmWnY
댓글을 작성하려면 로그인해야 합니다.
kr1878 3년 전
출력은 올바르게 되는데 어떻게 해야 시간초과를 없앨 수 있을까요??