#문제
2577번: 숫자의 개수
https://www.acmicpc.net/problem/2577
#접근방법
세 개의 자연수를 곱한 값을 반복문을 통해 10으로 계속 나누어 주면서 10으로 나눈 나머지의 숫자를 세주면 된다.
반응형
#풀이
#include <stdio.h>
int arr[10];
int main(){
int A,B,C;
int num;
scanf("%d %d %d",&A,&B,&C);
num = A*B*C;
for(int i=num;i>0;i/=10)
arr[i%10]++;
for(int i=0;i<10;i++)
printf("%d\n",arr[i]);
return 0;
}
세 개의 자연수를 곱한값 num을 반복문을 통하여 10으로 계속 나누어준다.
이 때, arr배열의 인덱스 값을 0 ~ 9까지의 숫자의 개수라고 생각해 주고 arr[i%10]++으로 개수를 세어준다.
그러면 arr배열에 들어있는 값을 출력하면 정답이다.
#성능
#정리
계속 10으로 나누어 주는 반복문 속에서 10의 나머지의 수를 세주면 풀 수 있는 문제였다.
arr[i%10]++ 단 한줄로 계산할 수 있는 테크닉을 가지면 쉽게 풀 수 있다.
'하루 한 문제' 카테고리의 다른 글
[백준] 2739번 : 구구단 [C/C++] (0) | 2021.12.04 |
---|---|
[백준] 2675번 : 문자열 반복 [C/C++] (0) | 2021.12.02 |
[백준] 2562번 : 최댓값 [C/C++] (0) | 2021.11.30 |
[백준] 11053번 : 가장 긴 증가하는 부분 수열 [C/C++] (0) | 2021.11.29 |
[백준] 2557번 : Hello World [C/C++] (0) | 2021.11.28 |