본문 바로가기

카테고리 없음

Programmers. 문자열 내 마음대로 정렬하기

https://programmers.co.kr/learn/courses/30/lessons/12915?language=java

[기본 상태]

class Solution {
    public String[] solution(String[] strings, int n) {
        String[] answer = {};
        return answer;
    }
}

[풀이에 필요한 조건]

입력받은 문자열에서 뽑아낼 데이터를 담아낼 ArrayList 선언.

 

ArrayList 에 입력값 문자열 특정 위치의 문자를 추출하고, 문자열을 뒤에 붙여 만든 새로운 데이터를 List에 저장.

list.add(strings[i].charAt(n) + strings[i]);

 

ArrayList를 sort 하여 오름차순으로 정렬.

Collections.sort(list);

 

list에 저장된 i번째 값을 2번째 문자부터 끝까지( substring(1,list.get(i).length()) ) answer 배열에 하나씩 저장.

answer[i] = list.get(i).substring(1, list.get(i).length());

 

[참고]

ArrayList sort :

https://offbyone.tistory.com/154

 

ArrayList substring : 

https://aries574.tistory.com/9

 

[해답]

import java.util.*;

class Solution {
public String[] solution(String[] strings, int n) {
String[] answer = {};
ArrayList<String> list = new ArrayList<>();

for (int i = 0; i < strings.length; i++) {
list.add(strings[i].charAt(n) + strings[i]);
}

Collections.sort(list);

answer = new String[list.size()];

for (int i = 0; i < list.size(); i++) {
answer[i] = list.get(i).substring(1, list.get(i).length());
}

return answer;
}
}

더보기
import java.util.*;

class Solution {
public String[] solution(String[] strings, int n) {
String[] answer = {};
ArrayList<String> list = new ArrayList<>();

for (int i = 0; i < strings.length; i++) {
// System.out.println("받은 str  n번째 문자 : "+strings[i].charAt(n)+" str의 데이터 : "+ strings[i]);
list.add(strings[i].charAt(n) + strings[i]);
}

// ArrayList 오름차순 배열
Collections.sort(list);

answer = new String[list.size()];

for (int i = 0; i < list.size(); i++) {
// System.out.println("ArrayList list 에 저장된 정보 " + list.get(i));
// 배열 순서 변경을 위해 앞에 추가된 n번째 문자 + 기존 정보
// substring(i,j) i부터 j까지의 글자 리턴, 아래는 맨 앞글자를 잘라내고 글자의 끝까지 반환
answer[i] = list.get(i).substring(1, list.get(i).length());

// System.out.println("i = "+i+"일 때, answer["+i+"] = "+ answer[i]);
}

return answer;
}
}

public class Main {
public static void main(String[] args) {
Solution sol = new Solution();

String[] str = {"abce", "abcd", "cdx"};
int n = 2;

String[] result = sol.solution(str, n);

System.out.print("{");
for(int i=0;i<result.length;i++){
System.out.print(result[i]);
if(i<result.length-1){
System.out.print(",");
}
}
System.out.print("}\n");

}
}