JAVA

알고리즘 연습 - 문자열 내 마음대로 정렬하기 - JAVA

LoveApple 2019. 1. 4. 17:16

문제

문제분석

- 다른사람들의 코드를 참고하여 알고리즘을 이해하였습니다. N번째의 문자를 빼는 것까지는 생각을 하였지만, 이후에는 어떤 방법을 사용해야하는지 생각을 하지 못했습니다. 개인적으로 LEVEL1단계에서 좀 난해한 문제가 아니였다 생각합니다.

코드

프로그래머스

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.util.*;
class Solution {
  public String[] solution(String[] strings, int n) {
      
      ArrayList<String> list = new ArrayList<String>();
        
        for(int i=0;i<strings.length;i++) {
            list.add(strings[i].charAt(n)+strings[i]);
        }
        Collections.sort(list);
        String[] answer = new String[list.size()];
        for(int j=0;j<answer.length;j++) {
            answer[j] = list.get(j).substring(1);
            
        }
      return answer;
  }
}
cs

1. 뺀 문자에 대한것은 리스트에 보관하였습니다.

그리고 charAt메소드를 이용하여 n번째 문자와 기존의 문자와 더해주었습니다.

2. 배열에서는 정렬하는 메소드는 Arrays.sort()이지만, 리스트에서는 Collections.sort()메소드를 이용해야합니다.

3. 다음은 list.size()만큼의 배열을 만들어 준 후, .substring(1)을 이용하여 2번째 문자 이후부터 문자열을 배열에 저장해줍니다.

Eclipse

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
import java.util.*;
 
public class solution {
 
    public static void main(String[] args) {
        String[] strings = {"abce","abcd","cdx"};
        
        int n = 2;
        ArrayList<String> list = new ArrayList<String>();
        
        for(int i=0;i<strings.length;i++) {
            list.add(strings[i].charAt(n)+strings[i]);
        }
        
        Collections.sort(list);
        String[] answer = new String[list.size()];
        for(int j=0;j<answer.length;j++) {
            answer[j] = list.get(j).substring(1);
            System.out.println(answer[j]);
        }
        
    }
    
 
}
cs

 

HyunInKim/Stringsort
Contribute to HyunInKim/Stringsort development by creating an account on GitHub.
github.com