프로그래머스 자연수 뒤집어 배열로 만들기 Java
https://programmers.co.kr/learn/courses/30/lessons/12932
코딩테스트 연습 - 자연수 뒤집어 배열로 만들기
자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다. 제한 조건 n은 10,000,000,000이하인 자연수입니다. 입출력 예 n return 12345
programmers.co.kr
일단 뭉쳐져 있는 숫자를 각 자릿수별로 따로 봐야 하니까
1. 파라미터로 들어온 숫자를 문자나 문자열로 바꾸거나
2. 자릿수로 보는 방법도 있을 것 같다.
class Solution {
public int[] solution(long n) {
int[] answer = new int[(int)(Math.log10(n)+1)];
for(int i = 0; i < answer.length; i++){
answer[i] = (int)(n % 10);
n = n / 10;
}
return answer;
}
}
➡️나는 문자열을 이용하지 않고 풀었다.
각각의 자릿수를 구해 푼 이유는 굳이 뒤집을 필요가 없기 때문이었다.
(StringBuffer에 reverse()라는 함수가 있다는 건 다른 사람의 풀이를 보면서 알게 됐다)
➡️처음엔 크기가 고정돼 있지 않은 ArrayList를 사용해서 풀 생각이었다.
삽입과 삭제가 많은 작업이 아니기 때문에 LinkedList보다 나을 것이라 생각했고,
List는 크기가 가변적이니까 편리할 것이라 생각했다.... 하지만 List에서 int[]로 바꾸는 과정이 더 귀찮아서 탈락
➡️크기는 어차피 파라미터 n의 길이만큼일 테니까 그걸 구하는 Math의 메소드를 사용하게 됐다.
참고: https://junghn.tistory.com/entry/JAVA-int형-숫자의-자릿수-구하는-방법-int-길이-구하는-방법
➕사람들의 풀이가 진짜 다양한 문제인 것 같다
String, StringBuffer를 쓴 사람이 진짜 많았고, 그 풀이들을 구경하면서
정수형 타입에 + ""를 더했을 때 자바 내부적으로 StringBuffer가 생성되는 건 처음 알았음...
그러니까 "" + n 는 new StringBuffer해서 append 한거랑 똑같은 거라고 한다...