반응형
출처: https://www.hackerrank.com/challenges/repeated-string/problem
임의의 문자열과 문자열의 길이가 주어진다.
aba / aba / aba / a → 문자열 길이 10
[a]의 개수: 7
문자열의 길이 n이 작은 숫자가 아니기에 문자열의 길이를 무한정 늘릴 수는 없다.
그렇기에 처음 주어진 문자열의 규칙을 분석하여 구현
Input
aba
10
Output
7
ex) 'aba' 라는 문자가 있다고 생각하자. (길이는 3)
해당 문자열이 1000 길이만큼 반복된다고 생각하자
aba + aba + aba + aba + ... + a
즉, 길이가 3인 [aba]는 333번 반복되서 999 길이를 채울 것이고
부분 문자열인 [a]가 1을 차지하여 1000자를 채울 것이다.
위의 333과 1은 몫과 나머지로 도출.
import java.util.Scanner;
public class Solution {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.next();
Long len = Long.parseLong(sc.next());
// 주어진 문자열에서 'a'의 개수 파악하기
int size_of_a = 0;
for(int i=0; i<str.length(); i++) {
if(str.charAt(i) == 'a') {
size_of_a++;
}
}
Long answer = 0L;
Long share = len / str.length();
answer = share * size_of_a;
Long remainder = len % str.length();
// 부분 문자열에 대한 'a'의 개수
for(int i=0; i<remainder; i++) {
if(str.charAt(i) == 'a') {
answer++;
}
}
System.out.println(answer);
}
}

반응형
'PS 문제 풀이 > HackerRank' 카테고리의 다른 글
[HackerRank] Cavity Map (0) | 2021.02.18 |
---|---|
[HackerRank] 3D Surface Area (0) | 2021.02.18 |
[HackerRank] Almost Sorted (Java) (0) | 2021.02.14 |
[HackerRank] Cut the sticks (Java) (0) | 2021.02.14 |
[HackerRank] Kangaroo (Java) (0) | 2021.02.14 |
댓글