Digit Frequency | HackerRank
Given a very large number, count the frequency of each digit from [0-9]
www.hackerrank.com
<문제>

input으로 받은 문자열 중 숫자문자가 있으면 0부터 9까지 총 몇 개씩 있는지 각각 출력하는 문제이다.
<코드>
int main() {
char s[1000];
char map[10];
scanf("%s", s);
int len = strlen(s);
for (int i = 0; i < 10; i++) map[i] = 0;
for (int i = 0; i < len; i++) {
int x = s[i] - '0';
if (x >= 0 && x <= 9) map[x]++;
}
for (int i = 0; i < 10; i++) printf("%d ", map[i]);
return 0;
}
<풀이>
문자열의 길이는 최대 1000이므로 문자열을 저장하는 배열 s를 최대길이 1000으로 선언하고, 숫자 0부터 9까지 개수를 셀 배열 map을 선언하고 모두 0으로 초기화하였다. 그리고 입력받은 문자열을 s에 저장한 뒤, for반복문을 문자열의 길이만큼 돌면서 s[i]-'0' 값을 정수형 변수 x에 저장하고, 만약 x가 0부터 9 사이에 있으면 정수이므로 map[x]를 1씩 증가시켰다. 마지막으로 map 배열을 모두 출력하여 문제를 풀 수 있었다.
<실행결과>

'c언어 스터디 > HackerRank' 카테고리의 다른 글
| [HackerRank] Tree: Lowest Common Ancestor (0) | 2021.11.21 |
|---|---|
| [HackerRank] Equal Stacks (0) | 2021.11.07 |
| [HackerRank] Printing Tokens (0) | 2021.11.07 |
| [HackerRank] Tree: Inorder Traversal (0) | 2021.10.10 |
| [hackerrank] Students Marks Sum (0) | 2021.10.10 |