lv 1 정수 내림차순으로 배치하기

2024. 12. 20. 10:52·코테/java

1. 문제 설명

2. 나의 풀이

import java.util.Arrays;

class Solution {
    public long solution(long n) {
        String nStr = n + "";
        char[] chars = nStr.toCharArray();
        int maxLength = chars.length;
        StringBuilder tempAnswer = new StringBuilder();
        
        Arrays.sort(chars);
        
        
        for(int i = chars.length-1; i >= 0; i--)
		{
			tempAnswer.append(chars[i]);
		}
        
        return Long.parseLong(tempAnswer.toString());
    }
}

1. 숫자를 자릿수대로 나눠서 배열에 넣는다.

2. 배열을 순서대로 정렬(Collection.reverseOrder() ) 하면 한번에 역순 정렬됨, 근데 기억 안나서 안썼다..)

3. for문 사용하여 역순으로 다시 Stringbuilder에 append (string에 += 로 붙이면 느림)

4. 반환

 



3. 다른 사람의 풀이

3-1. 나와 비슷하지만 더 나은 풀이

import java.util.*;

class Solution {
  public long solution(long n) {
        String[] list = String.valueOf(n).split("");
        Arrays.sort(list);

        StringBuilder sb = new StringBuilder();
        for (String aList : list) sb.append(aList);

        return Long.parseLong(sb.reverse().toString());
  }
}

스트링 빌더의 reverse를 쓰면 for문으로 다시 역순 정렬할 필요가 없다.

3-2. 정석대로 자릿수를 나누고, 크기를 비교하는 함수

// 문제가 개편되었습니다. 이로 인해 함수 구성이나 테스트케이스가 변경되어, 과거의 코드는 동작하지 않을 수 있습니다.
// 새로운 함수 구성을 적용하려면 [코드 초기화] 버튼을 누르세요. 단, [코드 초기화] 버튼을 누르면 작성 중인 코드는 사라집니다.
public class ReverseInt {
    public int reverseInt(int n)
  {
    int total_reverse=0, ten=1, tmp_num=n, count=0;//return할 변수, ten은 10씩 곱할 변수, tmp_num은 전달된 n값 가지는 임시변수, n의 자리수 알아내는 count
    int i=0;


    while(tmp_num!=0)//tmp_num이 0이 아닐 때까지 반복
    {
      count++;//count갯수 증가
      tmp_num=tmp_num/10;//다음 자리수를 알기 위해 10으로 나눈 값을 tmp_num에 저장
    }


    tmp_num=n;//다시 n값을 tmp_num에 저장
    int arr[]=new int[count];//count크기만큼의 배열 생성

    while(tmp_num!=0)//tmp_num이 0이 아닐 때까지 반복
    {
      arr[i]=tmp_num%10;
      tmp_num=tmp_num/10;//10으로 나눈 나머지 값을 저장했으니 다음 자리수를 알기 위해 10으로 나눈 값을 tmp_num에 저장
      i++;//인덱스 값 증가
    }

    //내림차순->큰수부터 작은수로 내려감
    for(i=0; i<arr.length; i++)
        for(int j=i+1; j<arr.length; j++)
        if(arr[i]<arr[j])
        {
             int tmp=arr[i];
             arr[i]=arr[j];
             arr[j]=tmp;
          }

        for(i=arr.length-1; i>=0; i--)//맨 마지막 인덱스인 arr.length-1부터가 1의 자리 수이므로
        {
            total_reverse+=arr[i]*ten;//total_reverse에 arr[i]*ten한 값을 계속 더하기
        ten=ten*10;//1의 자리 수부터 계산하였으므로 점차 올라가니까 10씩 곱해주기
        }

        return total_reverse;
    }

    // 아래는 테스트로 출력해 보기 위한 코드입니다.
    public static void  main(String[] args){
        ReverseInt ri = new ReverseInt();
        System.out.println(ri.reverseInt(118372));
    }
}
저작자표시 비영리 (새창열림)

'코테 > java' 카테고리의 다른 글

[프로그래머스][java] lv1 이상한 문자 만들기  (0) 2025.01.10
[프로그래머스][java] lv 1 부족한 금액 계산하기  (0) 2025.01.09
[프로그래머스][java] lv 0 중복된 문자 제거  (0) 2024.12.02
[프로그래머스][java] lv 0 문자열 정렬하기 (1)  (1) 2024.11.28
[프로그래머스][java] lv 0 주사위의 개수  (0) 2024.11.27
'코테/java' 카테고리의 다른 글
  • [프로그래머스][java] lv1 이상한 문자 만들기
  • [프로그래머스][java] lv 1 부족한 금액 계산하기
  • [프로그래머스][java] lv 0 중복된 문자 제거
  • [프로그래머스][java] lv 0 문자열 정렬하기 (1)
니누고
니누고
주니어 개발괴발자
  • 니누고
    진땡이코딩조림
    니누고
  • 전체
    오늘
    어제
    • 분류 전체보기 (93)
      • 편안한코딩생활 (12)
        • 오류 해결 일지 (6)
        • 기타등등 (6)
      • 백 (23)
        • jsp (1)
        • spring boot (7)
        • spring (7)
        • 전자정부프레임워크 (8)
      • 프로젝트 (13)
        • 블로그 제작(중단) (12)
      • 프론트 (3)
        • javascript (3)
      • 데이터베이스 (6)
        • oracle (5)
        • 그 외 (1)
      • cs (6)
        • java (4)
        • cs (1)
        • C (1)
      • 코테 (26)
        • java (25)
        • sql (1)
      • 앱 (0)
        • flutter (0)
        • dart (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Eclipse
    JPA
    프로그래머스
    iBatis
    대문자와소문자
    티스토리챌린지
    tomcat
    가장 큰 수 찾기
    spring
    코딩테스트
    oracle함수
    배열
    중복된 문자 제거
    2017팁스다운
    함수
    배열 회전시키기
    카카오 블라인드 채용
    스프링의 기본 파싱전략
    mod_jk.log
    컴퓨터용량줄이기
    Oracle
    전자정부프레임워크
    apache
    egov
    jpa #springboot
    오블완
    SpringBoot
    CRUD
    Java
    문자열 정렬하기
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
니누고
lv 1 정수 내림차순으로 배치하기
상단으로

티스토리툴바