17, 18번째 줄처럼 카운트를 하면 반드시 둘 중 하나는 배열의 잘못된 인덱스에 접근하게 됩니다.
1157번 - 단어 공부
alphabet[s[i]-65]++; //대문자 개수 카운트
alphabet[s[i]-97]++; //소문자 개수 카운트
원래는 이 부분에서 에러가 발생합니다.
s 라는 놈은 소문자 / 대문자 둘 중 하나인데, 해당 코드에서는 문자 하나에 대해 두가지 접근을 같이 시도합니다.
이러면 두 경우 중 하나는 반드시 배열 인덱스를 넘어서게 됩니다.
예시로 대문자 A 가 입력으로 들어온 경우,
'A' - 65 = 0으로 0~25라는 배열의 인덱스 안에 존재하지만
'A' - 97 = -32 로 음수값이 나오게 되며 이는 배열 인덱스에 존재하지 않습니다.
이런 부분 때문에 문제가 발생한 걸 수도 있으니, if 문으로 나누어서 처리하는걸 추천드립니다.
추가적으로 아스키 코드값으로 숫자 대신 문자를 쓸 수 있습니다.
( 65 = 'A', 97 = ''a' 로 바꿀 수 있습니다)
댓글을 작성하려면 로그인해야 합니다.
kckc0608 4년 전 1
1157번 FAQ 읽어봤습니다!
배열크기 선언도 1000001 로 했고, strlen 을 for문 안에 넣지도 않았고, char 이 아닌 int 로 알파벳 배열도 선언했습니다!
당연히 1157문제에 나와있는 모든 예제는 컴파일러로 실행해보면 맞게 나옵니다ㅠㅠ
어떤 반례 때문에 틀렸다고 나올까요 ㅠㅠ