문제 설명
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));
}
}
'연습 코딩테스트' 카테고리의 다른 글
연습문제 1-2(5) 배열 0에서 가장 가까운 값 (0) | 2023.03.30 |
---|---|
연습문제 1-2(4) n번째 주문 취소된 주문 번호 구하기 (0) | 2023.03.30 |
연습문제 1-2(3) N개의 최대공약수 구하기 (0) | 2023.03.30 |
연습문제 1-2(2) 구분자 기준 문장 뒤집기 (0) | 2023.03.30 |
연습문제 1-1(5문제 풀이) (0) | 2023.03.28 |