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

_021119·2021년 4월 13일
0

알고리즘

목록 보기
4/9

public String[] solution(String[] strings, int n) {

  Arrays.sort(strings, new Comparator<String>() {

  @Override
  	public int compare(String o1, String o2) {
  	/*리턴값이 -1이면 내림차순, 0이면 같음, 1이면 오름차순*/
  		if(o1.charAt(n) > o2.charAt(n)) {
  			return 1;
  		}else if(o1.charAt(n) < o2.charAt(n)) {
  			return -1;
  		}if(o1.charAt(n) == o2.charAt(n)){

  		//compareTo a와 b가 같으면 0 반환
  		//a가 크면 1 , 작으면 -1

  			return o1.compareTo(o2);
  		}return 0;
  	 }
  });

  return strings;
}

Comparator 인터페이스 사용!!!!!!!!!!!!!

정렬에 기준을 부여한다.

n번째 자리 글자를 서로 비교해서  <리턴값이 1 이면 오름차순, -1이면 내림차순, 0이면  같음> 이라는 점을 유의하여 코드를 짜준다.

n번째 자리 글자가 같을 경우엔 String o1, String o2를 비교하여 (compareTo) o1과 o2가 같으면 0 반환, o1 가 크면 1반환, o2가 크면 -1을 반환 해준다.


<다른사람의 풀이!!!!!>

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

        ArrayList<String> arr = new ArrayList<>();

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

        Collections.sort(arr);

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

:  해당 문자열(ex. bed)앞에 비교해야할 문자를 붙혀 리스트에 저장한다.. ebed(e+bed)

정렬을 한다.  (Collections.sort()) 앞에 붙혀둔 문자열을 기준으로 정렬이 된다.

맨앞 기준이 되는 문자를 제외한 나머지 문자만 뽑아 answer에 담아준다. (subString(1,문자열길이) 1번째문자부터 문자열 길이까지. bed)

profile
내가 정리하고 싶어서 쓰는 로오그

0개의 댓글