본문 바로가기
PS 문제 풀이/HackerRank

[HackerRank] Repeated String (Java)

by 까망 하르방 2021. 2. 14.
반응형

출처: 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

댓글