문 제
세 개의 자연수 A, B, C가 주어질 때 A × B × C를 계산한 결과에 0부터 9까지 각각의 숫자가 몇 번씩 쓰였는지를 구하는 프로그램을 작성하시오. 예를 들어 A = 150, B = 266, C = 427 이라면 A × B × C = 150 × 266 × 427 = 17037300 이 되고, 계산한 결과 17037300 에는 0이 3번, 1이 1번, 3이 2번, 7이 2번 쓰였다.
입 력
첫째 줄에 A, 둘째 줄에 B, 셋째 줄에 C가 주어진다. A, B, C는 모두 100보다 크거나 같고, 1,000보다 작은 자연수이다.
150
266
427
출 력
첫째 줄에는 A × B × C의 결과에 0 이 몇 번 쓰였는지 출력한다. 마찬가지로 둘째 줄부터 열 번째 줄까지 A × B × C의 결과에 1부터 9까지의 숫자가 각각 몇 번 쓰였는지 차례로 한 줄에 하나씩 출력한다.
3
1
0
2
0
0
0
2
0
0
코 드
using System;
namespace algorithm
{
class Program
{
static void Main(string[] args)
{
// === 입 력 === //
int sum = 1;
sum = sum * int.Parse(Console.ReadLine());
sum = sum * int.Parse(Console.ReadLine());
sum = sum * int.Parse(Console.ReadLine());
// === 입 력 === //
// === 자리수 카운팅 === //
int[] result = new int[10];
for (int i = sum; i > 0; i = i / 10)
{
result[i % 10]++;
}
// === 자리수 카운팅 === //
// === 출력 === //
for (int i = 0; i < result.Length; i++)
{
Console.WriteLine(result[i]);
}
// === 출력 === //
}
}
}
비교 코드 - 1
곱한 값을 char형 배열로 변환 이후 0-9숫자까지 char형 배열을 하나하나씩 비교해 가면서 자리수 카운팅
...
// 곱한 값을 분석할 수 있게 char 형으로 변환한다.
char[] pieceNum = temp.ToString().ToCharArray();
int count = 0;
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < pieceNum.Length; j++)
{
if (pieceNum[j].ToString() == i.ToString())
{
count++;
}
}
Console.WriteLine(count);
count = 0;
}
비교 코드 - 2
string을 배열처럼 쓸 수 있다는 사실 발견..
using System;
class Program {
static void Main()
{
int a = int.Parse(Console.ReadLine());
int b = int.Parse(Console.ReadLine());
int c = int.Parse(Console.ReadLine());
Module((a*b*c).ToString());
}
static void Module(string result)
{
int[] count = new int[10];
for(int i = 0; i < result.Length; i++)
{
int temp = int.Parse(result[i].ToString());
count[temp]++;
}
for(int i = 0; i<count.Length; i++)
{
Console.WriteLine(count[i]);
}
}
}