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

문제

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

사실 나는 문제를 이런식으로 풀었는데 제출해보면 정답이 아니라 그래서 인터넷에 기존에 풀어봤던 사람들 것을 참고해보니까 방식이 조금 다른 것 같았다. 이런 문제들을 조금씩 풀어보면서 각 클래스의 API 메소드들을 조금씩 알게되고 써봄으로써 이해하는 것 같다..(기본적인것이라도..)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class ReverseStr {
public String reverseStr(String str){

String[] strArr = str.split("");
List<String> stringList = Arrays.asList(strArr);
Collections.reverse(stringList);

String result = "";

for (String reverseStr : stringList) {
result += reverseStr;
}

return result;
}

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

다른 사람의 풀이 (1)

이 코드는 매개변수 str로 받은 것을 toCharArray() 를 사용해서 배열로 받아온 후에 바로 StringBuilder 객체를 사용해서 리턴한다. StringBuilder의 객체의 메소드는 String을 바로 반환하기때문에 저렇게 메소드 체인으로 쓸 수가 있다.

StringBuilder에 reverse() 메소드가 있는 것은 처음 알앗다.

1
2
3
4
5
6
7
8
9
10
11
12
13
public class ReverseStr {
public String reverseStr(String str){
char[] sol = str.toCharArray();
Arrays.sort(sol);
return new StringBuilder(new String(sol)).reverse().toString();
}

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

다른 사람의 풀이 (2)

Collections.reverseOrder()는 역순을 반환하는 Comparator 객체를 반환한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class ReverseStr {
public String reverseStr(String str){
String[] arry = str.split("");
Arrays.sort(arry, Collections.reverseOrder());
StringBuffer sb = new StringBuffer();
for( String s : arry )
{
sb.append(s);
}
return sb.toString();
}

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

배운점

  • 배열을 정렬할때는 Arrays.sort() 메소드를 사용한다.
  • List를 정렬할때는 Collections.sort() 메소드를 사용한다.

자바 정렬 Comparable Comparator 확실히 알고 넘어가기

Share