[TIL] 22.03.22 알고리즘) 정수 내림차순으로 배치하기

hyewon jeong·2023년 3월 22일
0

알고리즘

목록 보기
13/13
post-custom-banner

1 [프로그래머스] 정수 내림차순으로 배치하기(JAVA)

https://school.programmers.co.kr/learn/courses/30/lessons/12933?language=java


2 문제


3 풀이

  1. 숫자를 스트림을 활용하여 배열로 변환시킨다.
    1-1 변환시킬때 , 스트링타입->long타입으로 변환시켜 배열한다.
  2. 쪼개진 숫자를 내림차순한다.
    2-1 Arrays.sort(nums, Collections.reverseOrder()); 사용 하려 했으나 타입이 달라 사용불가했다.


2-2 직접 내림차순 코드를 이중 for문을 사용하였다.

  1. 배열 -> 하나의 숫자로 붙여야한다. 이때 StringBuilder를 이용하였다.

⚠️ import시
import.java.util.*; 하면 Stream을 인식하지 못한다...


4 소스 코드

import java.util.stream.*;
 
class Solution {
    public long solution(long n) {
      long answer = 0;
      long[] nums = Stream.of(String.valueOf(n).split(""))
          .mapToLong(Long::parseLong)
          .toArray();
      //내림차순
      for (int i = 0; i < nums.length; i++) {
        for (int j = 1 + i; j < nums.length; j++) {
          if (nums[i] < nums[j]) {
            Long temp = nums[i];
            nums[i] = nums[j];
            nums[j] = temp;
          }
        }
      }

      //배열 -> 하나의 숫자열
      StringBuilder stringBuilder = new StringBuilder();
      for (long num : nums) {
        stringBuilder.append(num);
      }
      answer = Long.valueOf(stringBuilder.toString());
      return answer;
    }
  }

5 기타공부

  • Stirng.valueOf(value) vs toString
    toString과 함께 value값을 Stirng 으로 반환한느 메소이지만 차이점은
    모든 파라미터를 어떤상황에서든 String 로 변환한다는 점이다.

예를 들어,
value 에 null이 들어오면 toString 은 NRE(NullPointException)이 발생하지만,
Stirng.valueOf(value)은 문자 그대로 "null"을 반환한다.

  • mapXXX()
    단일 Stream의 원소를 매핑시킨 후 , 매핑시킨 값을 다시 Stream으로 변화하는 메소드이다. -> 기존의 Stream요소들을 변환하여 새로운 Streamdmf 반환
    예를 들어, "1", "2", "3"을 가진 Stream에 mapToInt()를 적용하면 1,2,3을 가진 Stream으로 변환된다.

참고
https://velog.io/@bingbong-party/int%ED%98%95-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%A5%BC-int%EB%B0%B0%EC%97%B4%EB%A1%9C-%EC%A0%84%ED%99%98%ED%95%98%EA%B8%B0

profile
개발자꿈나무
post-custom-banner

0개의 댓글