문자열 잘라서 정렬하기
문제
- 문자열 myString이 매개변수로 주어집니다.
- myString은 x를 포함한 문자열로 되어 있고
- x를 기준으로 문자열을 잘라내 배열을 만든 후
- 사전적 순서로 정렬하여 출력하는 문제입니다.
테스트 (이클립스)
- 처음에는 myString을 split 메소드를 이용하여 x를 기준으로 자르고 Arrays 클래스의 sort() 메소드로 정렬하고 출력하면 될 줄 알았지만 실패했습니다.
- 문제를 생각해보니 공백을 생각을 안 해서 trim() 메소드를 추가했지만 그래도 실패
- 뭐가 문제일지 찾아보니 trim() 메소드는 문자열에서의 공백을 제거해주고 배열에서는 사용할 수 없다는 것을 알게 되어 배열에서의 공백을 제거하기 위해 for문을 사용하였습니다.
- strList의 각 요소를 isEmpty() 메소드로 확인하고 공백이 없는 배열만 answer에 담도록 하였습니다.
- 이제 배열을 정렬하기만 하면 되기 때문에 ArrayList에서 String[] 배열로 변환해 주는데, 이때 answer.size()를 전달해서 result의 크기에 맞는 String[] 배열을 생성했습니다.
- 그 배열을 Arrays.sort()를 이용하여 정렬하고 출력했습니다.
- 여기서 length()와 size()의 차이는
- length() : String 클래스에서 사용되는 메소드입니다.
호출된 문자열의 길이를 반환합니다.
String[] 배열에 사용하면 요소 개수를 반환합니다. - size() : Collection 인터페이스를 구현한 컬렉션 클래스 (ArrayList, LinkedList, List 등)에서 사용되는 메소드입니다.
컬렉션의 요소 개수를 반환합니다.
- length() : String 클래스에서 사용되는 메소드입니다.
- 여기서 length()와 size()의 차이는
package com.namji.codingtest;
import java.util.ArrayList;
import java.util.Arrays;
public class Cut_and_SortStrings {
public static void main(String[] args) {
/*
* 문자열 myString이 매개변수로 주어집니다.
* myString은 x를 포함한 문자열로 되어 있고
* x를 기준으로 문자열을 잘라내 배열을 만든 후
* 사전적 순서로 정렬하여 출력하는 문제입니다.
* "axbxcxdx" > ["a","b","c","d"] / "dxccxbbbxaaaa" > ["aaaa","bbb","cc","d"]
*/
String myString = "dxccxbbbxaaaa";
String[] strList = myString.split("x");
ArrayList<String> answer = new ArrayList<String>();
for (String str : strList) {
if (!str.isEmpty()) {
answer.add(str);
}
}
String[] result = answer.toArray(new String[answer.size()]);
Arrays.sort(result);
System.out.println(Arrays.toString(result));
}
}
프로그래머스 코드
'Coding Test > Java Coding Test' 카테고리의 다른 글
[프로그래머스 / 자바] - 두 수의 곱 (0) | 2024.01.04 |
---|---|
[프로그래머스 / 자바] - 두 수의 차 (0) | 2024.01.04 |
[프로그래머스 / 자바] - 문자 리스트를 문자열로 변환 (0) | 2023.12.31 |
[프로그래머스 / 자바] - 덧셈식 출력하기 (0) | 2023.12.31 |
[프로그래머스 / 자바] - 접미사 배열 (0) | 2023.12.31 |