📄문제
N자리의 자연수가 입력되면 입력된 자연수의 자릿수 중 가장 많이 사용된 숫자를 출력하는 프로그램을 작성하세요.
예를 들어 1230565625라는 자연수가 입력되면 5가 3번 사용되어 가장 많이 사용된 숫자입니다.
ℹ️ 조건
답이 여러 개일 경우 그 중 가장 큰 수를 출력하세요.
⬇️ 입력
첫 줄에 자연수가 입력됩니다. 자연수의 길이는 100을 넘지 않습니다.
1230565625 |
⬆️ 출력
가장 많이 사용된 자연수를 출력합니다.
5 |
📝 풀이
#include <iostream>
int main()
{
int arr[10] = { 0, };
char numStr[101];
scanf_s("%s", numStr, sizeof(numStr));
for (int i = 0; i < numStr[i] != '\0'; ++i)
++arr[numStr[i] - '0'];
int max = -1;
int maxCnt = -1;
for (int i = 0; i < 10; ++i)
{
if (maxCnt <= arr[i])
{
maxCnt = arr[i];
max = i;
}
}
printf("%d", max);
}
- 자연수의 길이가 최대 100이기 때문에 문자열로 입력을 받습니다.
- arr[10]은 각 index 번호가 사용한 자연수 번호가 되어 각 배열에 하나씩 1을 올려 가장 많이 사용한 자연수를 얻을 수 있게 합니다.
- maxCnt를 통해 가장 많이 사용한 개수를 정하고, max는 가장 많이 사용된 자연수입니다.
'algorithms (C++)' 카테고리의 다른 글
[C++] 소수의 개수 (에라토스테네스의 체) (0) | 2023.10.13 |
---|---|
[C++] 뒤집은 소수 (0) | 2023.10.13 |
[C++] 숫자의 총 개수 (0) | 2023.10.13 |
[C++] 자릿수의 합 (1) | 2023.10.13 |
[C++] 모두의 약수 (0) | 2023.10.13 |