SWEA(SWExpertacAdemy)

[SWEA] 4676. 늘어지는 소리 만들기 D3 (자바)

심층코드 2025. 5. 20. 13:58

4676. 늘어지는 소리 만들기 D3

 [문제]
단어의 중간에 ‘-’(하이픈)을 넣어 늘어지는 소리를 표현해보자.

예를 들어 “wow”같은 문자열에서 두 번째 문자 ‘o’의 뒤편에 두 개의 하이픈을, 세 번째 문자 ‘w’의 뒤편에 한 개의 하이픈을 넣는다고 해보자. 그러면 문자열은 “wo--w-“가 될 것이다.

알파벳 소문자로 이루어진 문자열과 어떤 문자의 뒤편에 하이픈을 넣을 지 여부가 주어질 때 하이픈을 모두 넣고 나면 문자열이 어떻게 되는지 출력하는 프로그램을 작성하라.


 [입력]

첫 번째 줄에 테스트 케이스의 수 T(T ≤ 1000)가 주어진다.

각 테스트 케이스의 첫 번째 줄에는 길이가 1이상 20이하인 문자열이 주어진다. 이 문자열은 알파벳 소문자만으로 이루어져 있다. 이 문자열의 길이를 L이라고 하자.

두 번째 줄에는 몇 개의 하이픈을 넣을지를 의미하는 자연수 H(1 ≤ H ≤ 100)이 주어진다.

세 번째 줄에는 하이픈을 넣을 위치를 의미하는 H개의 0이상 L이하인 정수가 공백으로 구분되어 주어진다.

예를 들어 주어진 문자열이 “abc”이고 하이픈을 넣을 위치가 0이라면 “-abc”가 되고, 문자열이 “abc”이고 하이픈을 넣을 위치가 2이라면 “ab-c“가 된다.

 [출력]
 
각 줄마다 "#T" (T는 테스트 케이스 번호)를 출력한 뒤, 주어진 문자열에 하이픈을 넣어서 출력한다.

 

입력
2
wow
3
2 3 2
hoi
3
0 0 0
//Test Case 수
//Test Case 1의 문자열
//삽입할 하이픈의 갯수, H = 3
//하이픈을 넣을 위치


 
 
출력
#1 wo--w-
#2 ---hoi
//Test Case 1의 정답

 [문제]

import java.io.*;
import java.util.*;


public class Solution {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int T = Integer.parseInt(br.readLine());
        for (int i = 1; i <= T; i++) {
        	 String S=br.readLine();
        	 
        	 List<String> arr=new ArrayList<>();
        	 List<String> arrp=new ArrayList<>();
        	 for (int i2 = 0; i2 <= S.length(); i2++) {

        		 arrp.add("");	
			}
        	 
        	 for (int i2 = 0; i2 < S.length(); i2++) {

        		 arr.add(String.valueOf(S.charAt(i2)));	
			}
        	 
        	 int H = Integer.parseInt(br.readLine());
        	 
        	 
        	 StringTokenizer st = new StringTokenizer(br.readLine());
        	 for (int i3 = 0; i3 < H; i3++) {
				int A=Integer.parseInt(st.nextToken());
				arrp.set(A,"-"+arrp.get(A));
			}
        	 System.out.print("#"+i+" ");
        	 for (int i4 = 0; i4 < S.length(); i4++) {
				System.out.print(arrp.get(i4));
				System.out.print(arr.get(i4));
			}
        	 System.out.println(arrp.get(S.length()));
        }
        br.close();
	}
}