티스토리 뷰
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 |
'알고리즘 > SW Expert' 카테고리의 다른 글
[SW Expert] 4579. 세상의 모든 팰린드롬 2 (0) | 2018.08.23 |
---|---|
[SW Expert] 4615. 재미있는 오셀로 게임 (0) | 2018.08.23 |
[SW Expert] 4751. 다솔이의 다이아몬드 장식 (0) | 2018.08.23 |
[SW Expert] 4789. 성공적인 공연 기획 (0) | 2018.08.23 |
[SW Expert] 5162. 두가지 빵의 딜레마 (0) | 2018.08.23 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday