There is a string, , of lowercase English letters that is repeated infinitely many times. Given an integer, , find and print the number of letter a's in the first letters of the infinite string.
Example
s = 'abcac'
n = 10
The substring we consider is abcacabcac, the first 10 characters of the infinite string. There are 4 occurrences of a in the substring.
Function Description
Complete the repeatedString function in the editor below.
repeatedString has the following parameter(s):
s: a string to repeat
n: the number of characters to consider
Returns
Input Format
The first line contains a single string, s.
The second line contains an integer, n.
For 25% of the test case,
처음 s를 받아 제일 짧았을 때의 a의 개수를 구한 후, 반복했을 때엔 a가 최소 몇개가 되는지 몫으로 계산하고, 나누어 떨어지지 않으면 뒤에 나머지 글자들 중에 a의 개수를 세서 카운팅해주면 정답이다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
private static long repeatedString (long n, String s) {
// 주어진 문자열에서 a의 개수를 구함
long aCount = s.chars().filter(num -> num == 'a').count();
// n을 문자열의 길이로 나눈 몫과 처음 문자열의 a의 개수를 곱하면 나누어 떨어지면 전체 a의 개수임
long answer = n / s.length() * aCount;
// 만약 나누어 떨어지지 않으면 부족한만큼 문자열을 앞에서 잘라서 a의 개수를 구하고 정답에 더해줌
String remain = s.substring(0, (int) (n % s.length()));
answer += remain.chars().filter(num -> num == 'a').count();
return answer;
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine();
long n = Long.parseLong(br.readLine());
System.out.println(repeatedString(n, s));
}
}