문제 설명

n개의 문자를 보여주는 크기가 n인 전광판이 있습니다.

전광판의 문자는 오른쪽에서 왼쪽으로 반복해서 흘러가며, 1초에 한 글자씩 흘러갑니다.

전광판은 처음에는 .으로 가득 차 있으며, 문자열이 흐르다가 완전히 사라지고 나면 다시 문자열이 반복해서 흘러간다.

예를 들어, 크기가 5인 전광판에 "Snowball"을 노출한다고 가정할 때, 시간 t의 변화에 따른 노출 예시는 다음과 같습니다.

t : 0초
전광판 : .....
t : 1초
전광판 : ....S
t : 5초
전광판 : Snowb
t : 10초
전광판 : all..
t : 15초
전광판 : ...Sn

전광판의 크기 n과 전광판에 노출할 문자 s 그리고 시간 t가 주어질 때, t 초 후에 전광판에 표시될 문구를 프로그램을 구현하세요.


입력 형식

  • n: 전광판의 크기의 정수 값
  • s: 전광판에 노출할 문자열
  • t: 전광판의 상태를 출력하려는 시각의 정수 값

출력 형식

  • 조건에 맞는 전광판의 상태를 문자열로 반환

제약 사항

  • 1 <= n <= 20
  • 0 < s.length <= 20
  • 0 < t <= 1000

입출력 예시

  • 입력
    • n = 5
    • s = "Snowball"
    • t = 18
  • 출력: "Snowb"
  • 설명: 문자열이 한번 지나가고, 두 번째 흘러가는 상황이다. (본문 예시 참조)

작성 코드

(0/20)

class test12 {
    public String solution(int n, String s, int t) {
        int repeatDuration = n + s.length();
        int optimizeTime = t % repeatDuration;

        StringBuilder sb = new StringBuilder();
        sb.append(".".repeat(n));
        sb.append(s);
        sb.append(".".repeat(n - 1));
        return sb.toString()
                .substring(optimizeTime, optimizeTime + n);
    }

    public static void main(String[] args) {
        test12 st = new test12();
        int n = 5;
        String s = "Snowball";
        int t = 18;
        System.out.println(st.solution(n, s, t));
    }
    }