[210203] 13번 가장 많이 사용된 자릿수

문제

N자리의 자연수가 입력되면 입력된 자연수의 자릿수 중 가장 많이 사용된 숫자를 출력하는 프
로그램을 작성하세요.
예를 들어 1230565625라는 자연수가 입력되면 5가 3번 상용되어 가장 많이 사용된 숫자입니
다. 답이 여러 개일 경우 그 중 가장 큰 수를 출력하세요.

▣ 입력설명
첫 줄에 자연수가 입력됩니다. 자연수의 길이는 100을 넘지 않습니다.
▣ 출력설명
자릿수의 곱을 출력합니다.

입출력

▣ 입력예제 1
1230565625
▣ 출력예제 1
5


풀이

문자형식으로 값을 입력받는다.
전역변수에 정의한 arr배열은 크기가 10인 배열로 값이 1이라면 0번째 위치에 +1, 값이 2라면 1번째 위치에 +1을 하면서 각 숫자가 몇번 사용됐는지 확인하기 위한 배열이다.
tmp변수에 값을 저장할때 48을 빼는 이유는 값을 문자로 입력받았기 때문에 숫자 0의 아스키코드 값인 48을 빼주는것이다.

답이 여러개일때 가장 큰 수를 출력하기 위해서는 두번째 반복문 안에 if문에 크거나 같다라는 조건을 사용하면 된다.

코드

#include <iostream>
using namespace std;

int arr[10]; // 0부터 9까지 각 숫자가 얼마나 사용됐는지

int main()
{
	char c[101];
	int res, max = -32767, tmp;

	cin >> c;

	for (int i = 0; c[i] != '\0'; i++)
	{
		tmp = c[i] - 48;
		arr[tmp]++;
	}
	for (int i = 0; i < 10; i++)
	{
		if (arr[i] >= max)
		{
			max=arr[i];
			res = i;
		}
	}
	printf("%d", res);
}

좋은 웹페이지 즐겨찾기