본문 바로가기
코딩테스트/프로그래머스

[프로그래머스/Java] LV.1 자연수 뒤집어 배열로 만들기

by ⓞㅖ롱 2022. 9. 19.

간단할 줄 알았는데 의외로 고전했던 문제..

 

내 코드

class Solution {
    public int[] solution(long n) {
        int leng = Long.toString(n).length();
        int[] answer = new int[leng];
        int cnt = 0;

        while(n > 0){
            answer[cnt] = (int) (n % 10);
            n /= 10;
            cnt++;
        }

        return answer;
    }
}

나의 경우 long 타입의 자연수 n을 String 문자열로 바꿔준 후 길이를 구해 int[] 배열을 생성해주었다

저번 '자릿수 구하기' 문제에서 사용했던 자연수를 한자리씩 끊어주는 방법을 생각해냈다

~나머지는 저장하고 몫을 남기는 식으로 한자리 수 가져오는 방법~

참고

 

[프로그래머스/Java] LV.1 자릿수 더하기

역시 간단한 문제다~ 나같은 경우에는 int를 string으로 옮기고 string에서 char[] 문자배열로 옮기자! 라는 생각을 먼저 했다 내 코드 import java.util.*; public class Solution { public int solution(int n)..

mydevlogg.tistory.com

 

다른사람 코드

class Solution {
  public int[] solution(long n) {
  	  //12345 -> "12345"
      String s = String.valueOf(n);
      StringBuilder sb = new StringBuilder(s);
      //"12345" -> "54321"
      sb = sb.reverse();
      //"54321" -> ["5","4","3","2","1"]
      String[] ss = sb.toString().split("");

      int[] answer = new int[ss.length];
      for (int i=0; i<ss.length; i++) {
      	  //["5","4","3","2","1"] -> [5,4,3,2,1]
          answer[i] = Integer.parseInt(ss[i]);
      }
      return answer;
  }
}

(주석은 내가 추가함)

reverse() 함수를 사용하면 간단히 뒤집기가 가능하다.. 이걸 몰랐네...

reverse 사용을 위해 자연수를 String 타입으로 변환하고 StringBuilder으로 바꿔준다

배열에 담아준 후 int 타입으로 변경해주면 끝

 

StringBuilder에 대해서는 더 알아보기로~