티스토리 뷰

1) 생각

단어가 주어지고 '-'이 들어갈 Index가 주어졌을 때, 해당 Index에 '-'을 넣은 결과를 출력하라.


첫 번째 생각

기존에 있던 문자열에 '-'을 넣게되면 기존 단어들의 Index가 변한다.


두 번째 생각

'-'을 넣어줄 때마다 String을 생성하면 성능이 좋지 않을 것이다.


2) 방안

1) '-'의 위치 배열을 정렬하여 맨 뒤 Index 부터 '-'을 넣어주면 단어의 Index에 신경쓰지 않고 '-'을 넣어줄 수 있다.

2) 주어진 문자열을 List로 만들어 '-'의 삽입을 용이하게 하였다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
 
public class Solution {
    public static void main(String[] args) throws IOException{
        Scanner sc = new Scanner(System.in);
        int tc = sc.nextInt();
        StringBuilder sb = new StringBuilder();
        for(int i=1;i<=tc;i++) {
            String word = sc.next();
            // 사이사이에 넣을 수 있도록 List로 만들어 주기
            List<Character> list = new ArrayList<>();
            for(int j=0;j<word.length();j++) {
                list.add(word.charAt(j));
            }
            int n = sc.nextInt();
            int[] arr = new int[n];
            for(int j=0;j<n;j++)
                arr[j] = sc.nextInt();
            // 하이픈 위치 정렬
            Arrays.sort(arr);
            
            // 뒤에서부터 하이픈을 넣어주면 Index에 상관없이 넣어도된다.
            sb.append("#"+i+" ");
            for(int j=n-1;j>=0;j--)
                list.add(arr[j],'-');
            for(int j=0;j<list.size();j++)
                sb.append(list.get(j));
            sb.append("\n");
        }
        System.out.println(sb);
    }
}
cs


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday