알고리즘(Algorithm)/프로그래머스(Programmers)

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

나아가는중 2021. 10. 31. 23:09
반응형

프로그래머스 자연수 뒤집어 배열로 만들기 - JAVA


문제 설명

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

제한 조건

  1. n은 10,000,000,000이하인 자연수입니다.

문제 풀이 v1

  1. n % 10을 함으로서 n의 일의자리수를 알 수 있다.
  2. n / 10을 함으로서 n의 일의자리가 제거되고 십의 자리가 일의자리가 된다.
  3. 1 ~ 2를 n이 0이 될때까지 반복함으로 n을 뒤에서부터 한 자리씩 리스트에 저장.
  4. 리스트의 내용을 answer배열로 넣어 return.

소스 코드 v1

import java.util.*;

class Solution {
    public int[] solution(long n) {        
        List<Integer> list = new ArrayList<>();

        while(n != 0) {
            list.add((int)(n % 10));
            n /= 10;
        }

        int[] answer = new int[list.size()];
        for (int i = 0; i < list.size(); i++) {
            answer[i] = list.get(i);
        }
        return answer;
    }
}

문제 풀이 v2

  1. 문자열 s를 ""와 n을 더해줌으로 n을 문자열로 만들 수 있다.
  2. answer배열을 s의 길이까지 만들어주고, s의 마지막 문자를 배열에 추가 후 return.

BUT! 문자열로 변경하고 다음과 같이 할경우 가독성이 좋고 코드는 짧아지더라도, 실행속도에서 100배 정도 더걸리는 단점이 있다.

소스 코드 v2

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

        for (int i = 0; i < s.length(); i++) {
            answer[i] = s.charAt(s.length() - i - 1) - '0';
        }

        return answer;
    }
}
반응형