PS/백준
[백준/2477번/c언어] 숫자의 개수
정코딩딩
2023. 6. 30. 16:18
어떻게 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까지의 수를 차례로 카운트해줍니다.