https://www.acmicpc.net/problem/2577
2577번: 숫자의 개수
첫째 줄에 A, 둘째 줄에 B, 셋째 줄에 C가 주어진다. A, B, C는 모두 100보다 크거나 같고, 1,000보다 작은 자연수이다.
www.acmicpc.net
문제의 키 포인트
1. 문제를 잘 읽어야 한다. (필자는 처음에 각 주어지는 숫자마다 개수를 구하는 것이라고 착각했었음)
2. 주어지는 자연수 3개를 곱한 뒤 해당 값에서 각 자리에 쓰인 숫자 수를 구하는 것
해결방안
1. 우선 수를 받아올 변수들을 선언해주어야 한다.
2. 받아온 수를 곱해서 최종 변수에 저장해야 한다.
3. 최종 변수를 가지고 각 자리 수에 사용된 수를 카운트한다.
Hint: 1234= 1*1000+2*100+3*10+4*1
4. 여기서 최종 변수의 크기는 그 때마다 다르다는 것이 특징!
5. 마지막으로 값을 출력해준다.
소스코드
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main(void)
{
int i, a, b, c, number = 1; // 변수 선언
int count[10] = { 0, }; // 수를 카운트할 배열
scanf("%d %d %d", &a, &b, &c); // 수 입력받기
number = a * b * c; // 최종 변수
while (number > 0) // 최종 변수를 가지고 수 카운트
{
a = number % 10;
count[a] += 1;
number /= 10;
}
for (i = 0; i < 10; i++) // 각 자리 수마다 카운트 출력
{
printf("[%d]: %d번\n", i,count[i]);
}
return 0;
}
주의할 점
1. 위와 같이 Backjoon에 작성시 틀렸습니다. 가 나온다.
2. 당황하지 말고 출력값이 어떻게 다른지 파악하자.
그럼 오늘도 즐거운 코딩!
반응형
'코딩 | 알고리즘 & 문제풀이 > 백준_Backjoon' 카테고리의 다른 글
[C언어] Backjoon_Code 4344, 평균을 넘는 학생의 비율 (0) | 2021.06.30 |
---|---|
[C언어] Backjoon_Code 8958, OX퀴즈 (0) | 2021.06.29 |
[C언어] Backjoon_Code 1546, 평균 조작하기 (0) | 2021.06.28 |
[C언어] Backjoon_Code 3052, 서로 다른 나머지 계산하기 (0) | 2021.06.27 |
[C언어] Backjoon_Code 2562, 최대값 위치 찾기 (0) | 2021.06.25 |