본문 바로가기

c언어 스터디/HackerRank

[HackerRank] Repeated String

Repeated String | HackerRank

 

Repeated String | HackerRank

Find and print the number of letter a's in the first n letters of an infinitely large periodic string.

www.hackerrank.com

 

<문제>

이 문제는 입력받은 문자열이 무한으로 반복된다고 가정할 때, 앞에서 n개의 문자에서 문자 'a'가 총 몇 번 나타나는지 구하는 문제이다. 

input으로 첫번째 줄에 반복할 문자열을 입력하고, 두번째 줄에 검사할 총 문자의 개수 n을 입력한다.
output으로 n개의 문자 안에 a 문자가 총 몇 개 있는지 출력한다.

 

 

<코드>

long repeatedString(char* s, long n) {
    int l = 0;
    long count = 0;

    while (s[l] != '\0')
    {
        if (s[l] == 'a')
            count++;
        l++;
    }
    count *= n / l;

    for (int i = 0; i < n % l; i++)
    {
        if (s[i] == 'a')
            count++;
    }

    return count;
}

 

<풀이>

이 문제는 문자열 s에 있는 a 문자의 개수를 count한 뒤, 총 문자 개수인 n을 s의 길이로 나눈 다음 count와 곱하면 거의 풀었다고 생각했다. 마지막으로 n을 s의 길이로 나눈 나머지만큼 다시 a 문자의 개수를 세면 총 a의 개수를 알아낼 수 있다. 
이대로 코드를 만들었다. 먼저 문자열 s의 길이를 나타내는 l을 0으로 초기화하였고, a 문자의 개수를 세는 변수 count를 0으로 초기화하였다. while반복문을 통해 문자열 s에 있는 a문자의 개수를 세서 count 변수에 저장하고, 문자열 s의 길이는 l 변수에 저장하였다. 다음으로 count*n/l 해서 문자열이 반복되는 수만큼 count값을 곱하고 그 값을 count에 저장했다. 마지막으로 for 반복문을 통해 n을 l로 나눈 나머지만큼 문자열 s에서 문자 a가 있으면 count 값을 하나씩 증가시켜 총 a 문자의 개수를 알아낼 수 있었다.

 

 

<실행결과>

'c언어 스터디 > HackerRank' 카테고리의 다른 글

[HackerRank] Plus Minus  (0) 2021.08.21
[HackerRank] Compare two linked lists  (0) 2021.08.14
[HackerRank] Equalize the Array  (0) 2021.08.05
[HackerRank] Left Rotation  (0) 2021.08.05
[HackerRank] Drawing Book  (0) 2021.07.27