알고리즘/프로그래머스
[자바/알고리즘] 프로그래머스 문자열 내림차순으로 배치하기
효기로그
2019. 12. 13. 16:58
반응형
문제 설명
문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요.
s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.
제한 사항
- str은 길이 1 이상인 문자열입니다.
입출력 예
S | return |
"Zbcdefg" | "gfedcbZ" |
람다를 활용한 풀이
최근 람다식을 공부하고 있어서 시간날 때 기존의 풀이를 람다로 변경해보는 연습을 진행중입니다.
기존 아래의 코드를 람다식으로 풀어본 결과입니다.
class Solution {
public String solution(String s) {
return Stream.of(s.split(""))
.sorted(Collections.reverseOrder())
.collect(Collectors.joining());
}
}
나의 풀이
class Solution {
public String solution(String s) {
char[] cArr = s.toCharArray();
for (int i = 1; i < cArr.length; i++) {
for (int j = 0; j < cArr.length; j++) {
if(cArr[i]>cArr[j]) {
char temp = cArr[j];
cArr[j] = cArr[i];
cArr[i] = temp;
i--;
break;
}
}
}
return new String(cArr);
}
}
풀이 설명
기본적으로 다른사람들은 Arrays.sort()
를 사용해 정렬 후, 리버스 하는 방식으로 풀이를 접근했습니다.
저는 이와 비슷한 문제에서 자주 사용했기 때문에 정렬 자체를 구현해보는게 목적이였습니다.
반응형