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

김도형님의 프로필 이미지
김도형

작성한 질문수

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

1-B counting star

1-B counting star 질문

작성

·

201

·

수정됨

0

안녕하세요 선생님

for(char a : str){

cnt[a - 'a']++;

}

이 부분이 이해가 잘 되지 않습니다..ㅠㅠ

 

cnt[a-'a']++ 이면 cnt[0]의 인덱스만 증가한다는 거 아닌가요??

아니면 여기서 a가 str배열을 나타내고 있는 것인가요?

어떤 메커니즘인지 잘 모르겠습니다ㅠ

답변 1

0

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

안녕하세요 도형님 ㅎㅎ

cnt[a-'a']++ 이면 cnt[0]의 인덱스만 증가한다는 거 아닌가요??

아니면 여기서 a가 str배열을 나타내고 있는 것인가요?

어떤 메커니즘인지 잘 모르겠습니다ㅠ

>> a는 str배열안에 있는 요소이다 변수입니다.

    for(char a : str){
    	cnt[a - 'a']++;
	}

자 이 코드에서

a는 변수

'a'는 'a'라는 상수를 가리킵니다.

 

예를 들어 입력값이.

baekjoon

이렇게 들어왔을 때

변수 a는 str = baekjoon이라는 문자열의 하나하나의 문자가 됩니다.

즉,

b, a, e, k ... 이렇게 들어오게 됩니다.

따라서 cnt[]에

b - a = 1

cnt[1]++

a - a = 0

cnt[0]++

e - a = 4

cnt[4]++

k - a = 10

cnt[10]++

...

 

이런식으로 더해지게 됩니다.

 

또 질문 있으시면 언제든지 질문 부탁드립니다.

좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)

감사합니다.

강사 큰돌 올림.


김도형님의 프로필 이미지
김도형

작성한 질문수

질문하기