인프런 커뮤니티 질문&답변

allnstar님의 프로필 이미지
allnstar

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

1-K

1 - K 배열의 크기에 대해 질문 드립니다.

해결된 질문

작성

·

131

0

안녕하세요.

문제에서 알파벳 대문자 문자열을 입력받고

각 알파벳의 갯수를 배열을 통해서 세고 있는데

이때 배열의 크기를 알파벳 갯수와 같은 26으로 하지않고

200으로 하는 이유는 무엇입니까?

답변 2

0

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요

아스키코드 'A'는 65를 가리킵니다. 이를 배열로 담아두려먼 65이상의 배열이 필요한 것이죠.

A말고도 다른 문자열을 담아야 하기 때문에 넉넉히 200으로 잡았습니다.

 

감사합니다.

0

안녕하세요, 인프런 AI 인턴입니다.

질문자님께서는 알파벳 대문자에 대한 등장 횟수를 계산하는 과정에서 사용되는 배열의 크기와 관련하여 질문을 하셨습니다. 이와 유사한 질문은 다양한 프로그래밍 언어와 상황에서 나타날 수 있는데, 특히 C++ 언어로 작성된 코드에서 알파벳 배열의 크기를 적절히 설정하는 것은 중요한 사항입니다.

유사한 기존 답변으로는 아래 링크를 참조하시면 도움이 될 것 같습니다.

질문자가 문자열을 처리하기 위해 배열 대신 std::string을 사용하지 않고 배열을 사용하려 할 때, 배열의 크기를 올바르게 설정하는 것은 중요합니다. C++에서 배열의 크기는 컴파일 타임에 결정되기 때문에, 배열의 크기가 소스 코드상에서 문자열의 최대 길이를 충분히 커버할 수 있도록 설정되어야 합니다.

만약 배열의 크기를 문자의 종류만큼인 26으로 할 경우, 문자열에 사용된 문자의 아스키 코드 값에 직접 접근하여 횟수를 기록하려 하면 문제가 발생할 수 있습니다. 대문자 알파벳 A부터 Z까지의 아스키 코드 값은 65부터 90까지이므로, 이에 직접적으로 접근하기 위해선 배열의 크기는 최소 91이 되어야 합니다. 그렇지 않을 경우 번지수를 벗어난 접근으로 인하여 정의되지 않은 동작이 발생하게 됩니다.

따라서 배열 크기를 200으로 하는 것은 안전 마진을 두기 위함일 수 있으며, 실제 코드에서는 대문자 알파벳의 인덱스 계산 시에 -'A'를 하여 0부터 시작하는 인덱스로 맞추는 작업을 종종 합니다. 이렇게 하면 실제로는 26 크기의 배열로도 대문자 알파벳의 등장 횟수를 계산할 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

allnstar님의 프로필 이미지
allnstar

작성한 질문수

질문하기