본문 바로가기

c언어 스터디/HackerRank

[HackerRank] Digit Frequency

Digit Frequency | HackerRank

 

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