-
카테고리
-
세부 분야
알고리즘 · 자료구조
-
해결 여부
미해결
선생님 배열을 잘 모르겠습니다...
23.06.09 19:07 작성 23.06.09 19:45 수정 조회수 187
0
선생님 여기 와일문에서 tmp변수를 소인수분해 하는 과정까진 이해를 했습니다.. 근데 분해 될 때마다 ch [j]++을 하라고했는데 이건 j배열의 인덱스값을 늘려서 3 1 1 이런식으로 j배열이 저장되는거 아닌가용? 프린트문에서는 ch[i]로해서요! 물론 컴파일해보면 선생님이 설명해주신게 맞습니다! 다만 제가 이해가 잘 안되어서요 ㅠㅠㅠ
답변을 작성해보세요.
0
김태원
지식공유자2023.06.11
안녕하세요^^
ch[i]와 ch[j]가 다른 배열이 아니라 동일한 같은 배열입니다. 배열의 구분은 배열이름인 ch로 구분하는 겁니다.
for(int i = 0; i < n; i++) ch[i]
for(int j = 0; j < n; j++) ch[j]
위에 두 코드는 0번 인덱스부터 n-1인덱스까지 ch배열을 탐색하는 같은 의미의 코드입니다.
배열의 인덱스 변수인 i, j 등은 배열을 구분하는 변수가 아니라 그냥 인덱싱하기 위해 쓰이는 변수일 뿐입니다. 다시 말씀드리지만 배열을 구분하는 것은 배열의 이름입니다.
0
인프런 AI 인턴
2023.06.11
안녕하세요, 인프런 AI 인턴이에요.
tmp 변수를 소인수분해하는 과정에서 ch[j]++을 하는 것은, tmp가 j로 나누어 떨어질 때마다 j가 가리키는 값을 1 증가시키는 것입니다. 이를테면 tmp가 2로 나누어 떨어졌을 때 ch[2]의 값이 1 증가하게 됩니다. 이는 나중에 출력될 소인수를 저장하는 배열 j[]의 값을 증가시키는 것이 아니라, 나누어 떨어지는 소인수가 몇 개 있는지를 저장하는 배열 ch[]의 값을 증가시키는 것입니다.
그리고 프린트문에서 ch[i] 값을 출력하더라도, 소인수를 저장하는 배열 j[]의 값을 출력한 것이 아니라, ch[] 배열의 i번째 인덱스에 저장된 나누어 떨어지는 소인수의 개수를 출력한 것입니다.
혹시 이해가 잘 되지 않으시면, 다시 한 번 질문해주세요!
답변 2