자연수 뒤집어 배열로 만들기_Java

컴투루·2022년 6월 22일
0

프로그래머스 Lv.1

목록 보기
12/38

연습문제

🔥 자연수 뒤집어 배열로 만들기 🔥


👀 문제

자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열형태로 리턴해보자.


✔️ 조건

n은 10,000,000,000이하인 자연수


👩‍💻 입력 & 🧙 출력

nreturn
12345[5,4,3,2,1]

🙋‍♀️ 풀이

import java.util.*;

class Solution {
    public int[] solution(long n) {
        
        String[] a = String.valueOf(n).split("");
        
        int[] answer = new int[a.length];
        
        for(int i = a.length-1;i>-1;i--){
            answer[i] = Integer.parseInt(a[(a.length-1)-i]);
        }
    
        return answer;
    }
}

흠... 뭔가 어째하다가 통과는 되었는데 좋지 않은 코드라는 기분이 든다. 그리고 역시나 다른 사람들의 풀이를 보니 이런 방식은 전혀 없었다. 혹시 이렇게 푸신분이 있을까요...🖐


💬 다른 풀이

  1. ""+ n
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;  
          cnt++;
        }
      return answer;
  }
}

"" + n을 하게 되면 자바 내부적으로 StringBuiffer가 생성된다고한다.
그래서 new StringBuffer해서 append한것과 똑같게 되는 것이다.

  1. StringBuilder의 reverse
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;
  }
}

StringBuilder의 reverse()메서드를 이용해서 문자열을 뒤집고 이후에는 나의 풀이와 동일하게 풀어나갔다.

하지만 reverse()를 통해 문자열을 뒤집은 후에 for문을 돌려서
훨씬 간단한 조건들로 for문을 돌린것 같다.


👏 마무리

아자

profile
맘 먹으면 못할 게 없지

0개의 댓글