알고리즘 풀이 방법입니다.
문제(Problem) -> 생각(Think) -> 해결책(Solution) -> 리뷰(Review) 를 통해서 정리해서 작성합니다.
Problem📄
https://programmers.co.kr/learn/courses/30/lessons/12933
코딩테스트 연습 - 정수 내림차순으로 배치하기
함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다. 제한 조건 n은 1이
programmers.co.kr
Think🤔
long값 n을 받으면 그 값을 거꾸로 뒤집는 것
StringBuilder의 reverse를 이용해도 되고, char[] 배열을 이용해도 된다.
Solution✍
import java.util.Arrays;
class Solution {
public long solution(long n) {
// 문자형으로 반환
String str = String.valueOf(n);
// Char 배열에 넣기 위해 배열 생성
char[] ch = new char[str.length()];
// 정답 answer
String answerStr = "";
for(int i=0; i<str.length(); i++){
ch[i] = str.charAt(i);
}
Arrays.sort(ch);
for(int i=str.length()-1; i>=0; i--){
answerStr += ch[i];
}
long answer = Long.parseLong(answerStr);
return answer;
}
}
Review🤩
import java.util.Arrays;
class Solution {
public long solution(long n) {
String str = String.valueOf(n);
char[] ch = str.toCharArray();
Arrays.sort(ch);
StringBuilder sb = new StringBuilder(new String(ch,0,ch.length));
return Long.parseLong(sb.reverse().toString());
}
}
2번째 있는 코드였는데, 한번 보고 직접 구현해보았다.
직접 구현해 볼때 sb 생성할때 StringBuilder() 안에 그냥 ch만 넣으면 안되고 new String을 이용해서 넣을 수 있다는 것을 알게 되었다.
궁금해서 String.class를 찾아본 결과
생성하는 부분을 찾을 수 있었다.
'Algorithm' 카테고리의 다른 글
[프로그래머스] 콜라츠 추측 (0) | 2021.12.02 |
---|---|
[프로그래머스] 짝수와 홀수 (0) | 2021.12.02 |
[프로그래머스] 하샤드 수 (0) | 2021.12.02 |
[프로그래머스] 핸드폰 번호 가리기 (0) | 2021.12.02 |
[프로그래머스] x만큼 간격이 있는 n개의 숫자 (0) | 2021.12.02 |