-
728x90
StringBuilder를 이용하는 방법과 계속 10씩 나누는 방법
두 가지 방법으로 풀어보았다.(1) StringBuilder의 reverse()를 사용하는 방법
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()를해서 시간을 많이 잡아먹었다...
'알고리즘 풀이 > 프로그래머스' 카테고리의 다른 글
[level1] 프로그래머스 - 정수 제곱근 판별(JAVA) (0) 2021.08.31 [level1] 프로그래머스 - 정수 내림차순으로 배치하기(JAVA) (0) 2021.08.31 [level1] 프로그래머스 - 자릿수 더하기(JAVA) (0) 2021.08.31 [level1] 프로그래머스 - 이상한 문자 만들기(JAVA) (0) 2021.08.31 [level1] 프로그래머스 - 약수의 합(JAVA) (0) 2021.08.31 댓글