문제
세 개의 자연수 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보다 작은 자연수이다.
출력
첫째 줄에는 A × B × C의 결과에 0 이 몇 번 쓰였는지 출력한다. 마찬가지로 둘째 줄부터 열 번째 줄까지 A × B × C의 결과에 1부터 9까지의 숫자가 각각 몇 번 쓰였는지 차례로 한 줄에 하나씩 출력한다.
예제 입력 1 복사
150
266
427
예제 출력 1 복사
3
1
0
2
0
0
0
2
0
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
using System;
using System.Text;
using System.IO;
class AA{
static void Main(){
StreamReader sr = new StreamReader(new BufferedStream(Console.OpenStandardInput()));
StreamWriter sw = new StreamWriter(new BufferedStream(Console.OpenStandardOutput()));
StringBuilder sb = new StringBuilder();
int[] num = new int[3];
int cnt=0;
for(int i=0;i<3;i++){
num[i]=int.Parse(sr.ReadLine());
}
string result = (num[0]*num[1]*num[2]).ToString();
for(int j=0;j<=9;j++){
for(int k=0;k<result.Length;k++){
char c=result[k];
if(int.Parse(c.ToString())==j){
cnt++;
}
}
sb.Append(cnt+"\n");
cnt=0;
}
sw.WriteLine(sb.ToString());
sr.Close();
sw.Close();
}
}
|
cs |
2022.01.18 - [백준 알고리즘] - 2022.01.18 [백준] C# 빠른 A+B
2022.01.18 [백준] C# 빠른 A+B
문제 본격적으로 for문 문제를 풀기 전에 주의해야 할 점이 있다. 입출력 방식이 느리면 여러 줄을 입력받거나 출력할 때 시간초과가 날 수 있다는 점이다. C++을 사용하고 있고 cin/cout을 사용하
lee-ian.tistory.com
위 링크에서 쓴 StreamReader, StreamWriter를 사용하여 문제를 해결했다. 아마 이것을 사용해서 처리 속도가 빠른 거 같다. (작성 당시 C#답안중 제일 빠름)
17번째 줄에서 c는 string형식인 result에서 k번째의 문자를 뽑아내는 코드이다.
18번째 줄에서 char형식을 int로 변환하기위해 먼저 char를 string으로 변환 후, int로 변환했다.
'C# > 백준 알고리즘' 카테고리의 다른 글
2022.01.19 [백준] C# 기찍 N (0) | 2022.01.19 |
---|---|
2022.01.19 [백준] C# 평균은 넘겠지 (0) | 2022.01.19 |
2022.01.18 [백준] C# 빠른 A+B (0) | 2022.01.18 |
2022.01.18 [백준] C# N 찍기 (0) | 2022.01.18 |
2022.01.18 [백준] C# 합 (0) | 2022.01.18 |
댓글