문자열 해싱을 통해 중복을 찾아내시려는 것으로 보입니다만
18번줄 f += (j+1)*pow(p1[i].second[j], j+1);
에서 최대 f += 50 * pow(122, 50); 으로 int 자료형으로는 감당이 안되는 수가 더해집니다. (122는 'z'의 ASCII 값)
또한 정상적으로 계산되더라도 213169 * 50은 1000만이 넘습니다. 따라서 ttl 값이 배열 인덱스를 초과할 수도 있겠지요.
게다가 26종류의 알파벳이 50개나 포함될 수 있는 문자열을 1000만개 해쉬값중 하나로 해싱하는것은 의미가 없습니다.
문자열을 구성하는 경우의 수는 무려 26 + 26^2 + 26^3 + ... + 26^50 입니다.
이를 0~1000만 사이의 값으로 해싱한다면 서로 다른 여러 문자열이 같은 해쉬값을 가져 의미가 없게 될 것입니다.
0203peter 2년 전
런타임 에러가 어디서 발생하는건지 모르겠습니다 대답 주시면 감사하겠습니다