알고리즘 풀이/프로그래머스

[level1] 프로그래머스 - 자연수 뒤집어 배열로 만들기(JAVA)

데롱디롱 2021. 8. 31. 14:26
728x90
StringBuilder를 이용하는 방법과 계속 10씩 나누는 방법
두 가지 방법으로 풀어보았다.

 

 

(1) StringBuilderreverse()를 사용하는 방법

class Solution {
    public int[] solution(long n) {
        StringBuilder sb = new StringBuilder(n + "");
        sb.reverse();
        int[] answer = new int[sb.length()];
        for (int i = 0; i < answer.length; i++) 
            answer[i] = sb.charAt(i) - '0';

        return answer;
    }
}

 

아무래도 문자열을 뒤집는 것에서 시간이 너무 오래 걸리는 것 같았다...

 

 

(2) 숫자를 10으로 나누면서, 뒤에서 부터 넣어주는 방법
      ㄴ 아직 숫자가 몇개로 이루어져있는지 몰라서, ArrayList에 넣고 마지막에 이것을 배열로 바꿔주었다.

import java.util.ArrayList;

class Solution {
    public int[] solution(long n) {
        ArrayList<Integer> num = new ArrayList<Integer>();
        while (n > 0) {
        	num.add((int) (n % 10));
            n /= 10;
        }
        return num.stream().mapToInt(i -> i).toArray();
    }
}

 

숫자의 각 자리 숫자를 접근하다보면 10으로 나눈 나머지를 접근하게 되므로 가장 마지막 숫자부터 접근하게 된다.

그럼 결국 이 숫자를 그대로 배열에 넣어주면 되는 것이라

아주 간단하게 해결이 된다!!

시간도 훨씬 적게 걸렸다!!

 

 

바보같이 굳이 1번 방법인, reverse()를해서 시간을 많이 잡아먹었다...

댓글수0