S.S.G

문자열 내림차순으로 배치하기 본문

코딩/알고리즘

문자열 내림차순으로 배치하기

자유로운개발 2016. 7. 5. 16:33
반응형

[문제]

reverseStr 메소드는 String형 변수 str을 매개변수로 입력받습니다.
str에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 String을 리턴해주세요.
str는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.
예를들어 str이 "Zbcdefg"면 "gfedcbZ"을 리턴하면 됩니다.

 

 - 문제를 보며 곰곰히 생각하다가 "Zbcdefg" 를 문자 배열에 넣어 정렬을 한후 reverse 하는 방식으로 구현 하고자 했었다. 코딩으로 표현하는데 많은 시간이 걸렸다.. 그래도 풀었기 때문에 기분은 좋다.

 

import java.util.Arrays;

 

public class Test {
  public String reverseStr(String str) {

  

char[] chr = str.toCharArray();  // String을 char 배열로 바꾸어 줌.
Character[] array = new Character[str.length()];  //char 배열인 데이터를 String 으로 변경하기 위해 Character 클래스를 사용.

for (int i = 0; i < array.length; i++) {
       array[i] = chr[i];
}

  

Arrays.sort(array);  //.sort를 이용하여 정렬을 하였다. 

  

for (int i = array.length - 1; i >= 0; i--) {
       chr[array.length - 1 - i] = array[i];  //내림차순으로 하기 위한 과정.
}

      

String answer = new String(chr, 0, chr.length); //String 클래스를 이용하여 char 출력

return answer;

  }

 // 아래는 테스트로 출력해 보기 위한 코드입니다.
 public static void main(String[] args) {
  Test rs = new Test();
  System.out.println(rs.reverseStr("Zbcdefg"));

 }
}

 

실행 결과

 

gfedcbZ

 

1.

 public String reverseStr(String str){
  
  char[] sol = str.toCharArray();
     Arrays.sort(sol);
     return new StringBuilder(new String(sol)).reverse().toString();

 }


 

다른 사람이 코딩한 것을 보았는데 StringBuilder이 지원하는 정렬함수를 이용하여 간단하게 해결한 것을 볼 수 있다. 매우 간단하게 끝나버렸다..

 

★ StringBuilder 객체는 string과 마찬가지로 문자열을 담는 역할을 하지만 문자열을 수정할 수 있다는 차이점이 있음.

 

★ StringBuilder 변수_이름 = new StringBuilder(문자열_내용);

 

[예시]

1.  StringBuidler greeting = new StringBuilder("HelloWorld.");

2.  string 변수의 이름

string str = "HelloWorld.";

StringBuidler greeting = new StringBuilder(str);

 

2. 

public String reverseStr(String str){
    char[] array = str.toCharArray();

    for(int i = 0; i < array.length; i++){
      for(int j = i; j < array.length; j++){
        char temp;

        if(array[i] < array[j]){
          temp = array[i];
          array[i] = array[j];
          array[j] = temp;
        }
      }
    }
        return String.valueOf(array);
    }

 

두 값을 비교한 후 temp에 담는 방식이다. 이 문제를 해결하기 위해서 다양한 방법들이 사용되었음을 알 수 있다.

 

 

[문제 및 답안 출처: 헬로월드 (http://tryhelloworld.co.kr)]

 

 

반응형

'코딩 > 알고리즘' 카테고리의 다른 글

가운데 글자 가져오기  (0) 2016.07.11
나누어 떨어지는 숫자 배열  (0) 2016.07.07
평균 구하기  (0) 2016.07.07
짝수와 홀수  (0) 2016.07.05
최대값 최소값 구하기  (0) 2016.07.05