2022. 9. 13. 03:46ㆍ알고리즘/프로그래머스
※ 요약
- 입력받은 n의 자릿수를 큰것부터 작은 순으로 정렬하는 문제
- 풀이1
※ 참고
형변환 https://quick-finger.tistory.com/19
1. String 형변환 후 char배열로 저장한다
2. ch[i]보다 큰수를 찾기위해 두개의 for문을 정의한다
->두번째 for문 int j 는 for문을 통해 정의된 설명(5) +1 로 한다
3. ch[ i ] 보다 ch[ j ] 가 클경우 tmp에 정의한다
4. i보다 큰 j 를 i 에 정의 한다
5. j위치에 원래 i를 정의한다
6. ch를 String형으로 변환후 Long형으로 변환후 리턴한다
2~5 예시)
n = 1264 일때
설명(3) -> tmp = ch[0] // 1
설명(4)-> ch[0] = ch[2] // 6
설명(5)-> ch[2] = tmp // ch[0]
설명(2)-> int j = 0 + 1
잘 이해가 안될시 적으면서 하는걸 추천!

<정답코드1>
class Solution {
public long solution(long n) {
int tmp = 0;
char[] ch = String.valueOf(n).toCharArray(); //1
for(int i = 0; i<ch.length; i++) { //2
for(int j = i+1; j<ch.length; j++) {
if(ch[i] < ch[j]) {
tmp = ch[i]; //3
ch[i] = ch[j]; //4
ch[j] = (char) tmp; //5
}
}
}
return Long.parseLong(String.valueOf(ch));//6
}
}
- 풀이2
※ 참고
형변환 https://quick-finger.tistory.com/19
split https://quick-finger.tistory.com/20
StringBuilder https://quick-finger.tistory.com/21
1. String형으로 변환후 split 함수를 이용해 하나씩 배열로 정의한다
2. 내림차순으로 정렬해준다
3. for-each문으로 sb에 담아준다
4.sb를 Long 타입으로 변환 후 리턴 해준다
함수를 이용해 풀이1 보다 비교적 간단하다!

<정답코드2>
String[] arr = String.valueOf(n).split(""); // 1
Arrays.sort(arr,Collections.reverseOrder());// 2
StringBuilder sb = new StringBuilder();
for(String str : arr) { // 3
sb.append(str);
}
return Long.parseLong(sb.toString()); // 4
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스][자바(JAVA)] 하샤드 수 -모두의개발 (2) | 2022.09.13 |
---|---|
[프로그래머스][자바(JAVA)] 문자열 내 p와 y의 개수 -모두의개발 (2) | 2022.09.13 |
[프로그래머스][자바(JAVA)] 자연수 뒤집어 배열로 만들기 -모두의개발 (0) | 2022.09.12 |
[프로그래머스][자바(JAVA)] 평균 구하기-모두의개발 (0) | 2022.09.11 |
[프로그래머스][자바(JAVA)] 정수 제곱근 판별 -모두의개발 (0) | 2022.09.11 |