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;
}
}
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");
}
}