연습문제
🔥 자연수 뒤집어 배열로 만들기 🔥
자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열형태로 리턴해보자.
n은 10,000,000,000이하인 자연수
n | return |
---|---|
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;
}
}
흠... 뭔가 어째하다가 통과는 되었는데 좋지 않은 코드라는 기분이 든다. 그리고 역시나 다른 사람들의 풀이를 보니 이런 방식은 전혀 없었다. 혹시 이렇게 푸신분이 있을까요...🖐
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한것과 똑같게 되는 것이다.
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문을 돌린것 같다.
아자