kckc0608   4년 전

1157번 FAQ 읽어봤습니다!

배열크기 선언도 1000001 로 했고, strlen 을 for문 안에 넣지도 않았고, char 이 아닌 int 로 알파벳 배열도 선언했습니다!

당연히 1157문제에 나와있는 모든 예제는 컴파일러로 실행해보면 맞게 나옵니다ㅠㅠ

어떤 반례 때문에 틀렸다고 나올까요 ㅠㅠ

djm03178   4년 전

17, 18번째 줄처럼 카운트를 하면 반드시 둘 중 하나는 배열의 잘못된 인덱스에 접근하게 됩니다.

wpqldmlrna   4년 전

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년 전

모두 감사합니다!! 숫자대신 문자넣는 방법은 배워갈게요 ㅠㅠㅠ 감사합니다!! (매번 a랑 A출력해서 아스키 코드값 찾아가면서 했거든요..)

저도 저렇게 코드 쓰면서 오류가 나진 않을까 하면서 코딩하긴 했는데, 예제를 넣어보고 제가 임의로 넣어봤을 때, 다 답이 제대로 나와서 안심했나봐요..

if문으로 꼼꼼하게 케이스 나눠보겠습니다!

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