zerostar998   2년 전

아래에 있는 코드는 이번 문제에 대한 풀이인데 왜

while(result != 0){
arr[result % 10] +=1;
result /= 10;
}

이 부분에서 arr[result % 10] += 1; 이 부분이 이해가 가질 않습니다. 왜 +=1을 해주는건가요?

notorioush2   2년 전

+=1은 개수를 1 더해준다는 건데요

arr이 개수를 저장하는 배열이니까 세자리면 while에서 %로 가장 뒷자리수부터 하나씩 개수를 더해주는 건데

어느 부분이 의문이신가요? 

zerostar998   2년 전

제가 모르는 부분을 너무 대충 올려놨군요 답변감사합니다.
그 제가 이해가 안가는것이 나머지를 가져가면서 자릿수를 올린다는건 알겠으나

if같은 조건문으로 각 자리의 수를 비교해서 0~9까지의 수의 개수를 카운트 해야하는 것으로 생각했는데 그런게 없이 저렇게 해도 쓰인 수들이 알아서 카운트되는것이 이해가 가질 않았습니다. 보고도 모르겠는데 원리를 간단히 설명 가능 할까요?

notorioush2   2년 전

result가 1024라고 가정하면


result % 10 =4 ==> arr[4]=1

result /10 =102 ==> result=102

result % 10 =2 ==> arr[2]=1

result /10 =10 ==> result=10

result % 10 =0 ==> arr[0]=1

result /10 =1 ==> result=1

result % 10 =1 ==> arr[1]=1

result /10 =0 ==> while문 통과

최종 arr 에 1,0,2,4 각 인덱스 값 1로 저장 

zerostar998   2년 전

아 한번에 이해됐습니다 감사합니다 ㅠ 저렇게 하는게 간편하네요

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