Repeated String

HeeSeong·2021년 6월 27일
0

HackerRank

목록 보기
4/18
post-thumbnail

🔗 문제 링크

https://www.hackerrank.com/challenges/repeated-string/problem?h_l=interview&playlist_slugs%5B%5D=interview-preparation-kit&playlist_slugs%5B%5D=warmup


❔ 문제 설명


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

  • int: the frequency of a in the substring

Input Format

The first line contains a single string, s.
The second line contains an integer, n.


⚠️ 제한사항


  • 1s1001 ≤ |s| ≤ 100

  • 1n10121 ≤ n ≤ 10^12

  • For 25% of the test case, n106n ≤ 10^6



💡 풀이 (언어 : Java)


처음 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));
	}
}
profile
끊임없이 성장하고 싶은 개발자

0개의 댓글