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

솔솔·2022년 12월 26일
0
post-thumbnail

📑 문제 설명

자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요.
예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다.



🧑🏻‍💻 문제 풀이

class Solution {
    public int[] solution(long n) {
		String str = Long.toString(n);
        int len = str.length();
        int[] answer = new int[len];
        
/* ------------------------------------- */       
// 1. charAt()으로 배열에 담기
        for(int i=0;i<str.length();i++) {
        	len--;
        	answer[i] = Character.getNumericValue(str.charAt(len));
        }

// 2. substring()으로 배열에 담기 
		for(int i=0;i<str.length();i++) {
			answer[i] = Integer.valueOf(str.substring(len-1,len));
			len--;
		}
/* ------------------------------------- */ 

       return answer;
    }
}



🧑🏻‍💻 다른 사람의 풀이

class Solution {
  public int[] solution(long n) {
      String a = "" + n;
        int[] answer = new int[a.length()];
        int cnt=0;

        while(n>0) {
            answer[cnt]=(int)(n%10);
            n/=10;
            System.out.println(n);
            cnt++;
        }
      return answer;
  }
}

String a = "" + n;
- String + n을 할 경우 스트링으로 인식된다.
- 자바 내부적으로 StringBuffer가 생성되기 때문에 new StringBuffer 후 append 한 것과 동일하다.

class Solution {
  public int[] solution(long n) {
      String s = String.valueOf(n);
      StringBuilder sb = new StringBuilder(s);
      sb = sb.reverse();
      String[] ss = sb.toString().split("");

      int[] answer = new int[ss.length];
      for (int i=0; i<ss.length; i++) {
          answer[i] = Integer.parseInt(ss[i]);
      }
      return answer;
  }
}
  1. n을 String으로 변환 후 스트링빌더 생성
  2. sb.reverse()를 이용해 문자열을 뒤집은 후, 문자열을 잘라 배열에 저장하는 split() 함수 사용해 String[] ss에 담아줌
  3. ss[i]를 int형으로 변환해 answer에 담아 리턴



🔗 문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/12932

0개의 댓글