본문 바로가기
Coding Test/Java Coding Test

[프로그래머스 / 자바] - 문자열 잘라서 정렬하기

by nam_ji 2024. 1. 3.

문자열 잘라서 정렬하기

문제

  • 문자열 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 등)에서 사용되는 메소드입니다.
        컬렉션의 요소 개수를 반환합니다.
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));
	}
}


프로그래머스 코드