본문 바로가기

PS/백준

[백준/2477번/c언어] 숫자의 개수

 

어떻게 0부터 9까지의 수의 개수를 비교할까 고민하다가

0으로 선언된 배열을 하나 만들어두고 해당하는 숫자의 배열인덱스 값을 하나씩 올려서 카운트된 값을 출력하자는 생각을 했습니다.

자세한 설명은 아래 코드를 보고 순차적으로 설명하겠습니다.

- 먼저 정수 a,b,c 를 사용자로부터 입력받고 (한줄에 하나씩 입력받는다는 조건이므로 scanf를 이용하였습니다.)

- 정수형 변수 mul을 사용해 세 값을 곱한 값을 저장합니다.

- 한자리씩 떼어내기 위해서 while문을 통해 mul을 10으로 나눈 나머지 구하고

나머지 숫자에 해당하는 배열의 인덱스 값을 올려 카운팅하는 방식을 선택했습니다.

 

예를 들어 설명하겠습니다.

261이라는 mul값을 가진다고 하면 261%10 = 1 이 되고 arr[1]의 값이 0에서 1로 바뀌어 저장됩니다.

이제 6이라는 숫자를 뽑아내고 싶으므로

mul은 261 / 10 = 26으로 대체되고 다시 while문을  실행시켜 26 % 10 = 6 이 되고 arr[6]이 0 에서 1로 바뀌게 됩니다.

위와 같은 방식으로 2도 카운팅하고 while문을 빠져나옵니다.

 

- for 문을 통해 출력합니다.

i는 0부터 9까지의 수를 표현하고 배열에 저장된 0부터 9까지의 수를 차례로 카운트해줍니다.