[ Programmers ] 문자열 내 마음대로 정렬하기 (Java)

ma.caron_g·2021년 11월 28일
0

Lv.1 - Programmers (완성)

목록 보기
45/74
post-thumbnail

1. Problem 📃

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

https://programmers.co.kr/learn/courses/30/lessons/12915



2. Constraint 🔗


3. Solution 🔑

  1. 입력 받은 배열의 길이 - 1 만큼 for문을 돌려 배열들을 확인
    (-1을 하는 이유는 for문 안에 if문에서 (i+1)을 하여 본인 다음 요소와 비교하여 줄껀데, 마지막 길이에서 +1을 하면 index값이 오버 되기 때문에 -1 길이까지 확인.)
  2. if문을 통해 문자열.charAt(n)을 통해 n번째 문자를 다음 문자열.charAt(n)과 비교하여, 뒤에 문자값(아스키코드 값)이 작을 경우, 문자 요소 위치를 서로 바꿔주고, i=-1로 초기화하여 처음부터 다시 비교.
  3. 지정된 charAt(n)값이 다음 문자와 같을 경우 사전순으로 정렬해야 하므로 compareTo() 메서드를 통해 두 문자열의 값을 비교하여 위치를 바꿔서 사전순으로 정렬해준다.

4. Code 💻

import java.util.Arrays;

class Solution {
    public String[] solution(String[] strings, int n) {
    	String[] answer = new String[strings.length];
        String temp ="";
        
        for(int i=0; i<strings.length-1; i++) {
        	if((strings[i].charAt(n)) > strings[i+1].charAt(n)) {        		
        		temp =  strings[i];
        		strings[i] = strings[i+1];
        		strings[i+1] = temp;
        		i=-1;
        	}
        	else if(strings[i].charAt(n) == strings[i+1].charAt(n)) {
        		if(strings[i].compareTo(strings[i+1]) > 0) {
        			temp = strings[i];
        			strings[i] = strings[i+1];
				strings[i+1] = temp;
            			i=0;
        		}
        	}
        }
        
        return answer = strings;
    }
}

5. Growth 🍄

기준값.compareTo( 비교대상 )란?
두개의 값을 비교하여 int값으로 반환하여 주는 함수.
Value의미
양수크다
0같다
음수작다

[ 특징 ]

  • 문자들의 길이 차이를 먼저 반환.
  • 문자 길이가 같을 경우 다른 문자를 가진 자릿수의 아스키코드 값의 차이를 반환.
profile
다른 사람이 만든 것을 소비하는 활동보다, 내가 생산적인 활동을 하는 시간이 더 많도록 생활화 하자.

0개의 댓글