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 |