간단할 줄 알았는데 의외로 고전했던 문제..
내 코드
class Solution {
public int[] solution(long n) {
int leng = Long.toString(n).length();
int[] answer = new int[leng];
int cnt = 0;
while(n > 0){
answer[cnt] = (int) (n % 10);
n /= 10;
cnt++;
}
return answer;
}
}
나의 경우 long 타입의 자연수 n을 String 문자열로 바꿔준 후 길이를 구해 int[] 배열을 생성해주었다
저번 '자릿수 구하기' 문제에서 사용했던 자연수를 한자리씩 끊어주는 방법을 생각해냈다
~나머지는 저장하고 몫을 남기는 식으로 한자리 수 가져오는 방법~
참고
[프로그래머스/Java] LV.1 자릿수 더하기
역시 간단한 문제다~ 나같은 경우에는 int를 string으로 옮기고 string에서 char[] 문자배열로 옮기자! 라는 생각을 먼저 했다 내 코드 import java.util.*; public class Solution { public int solution(int n)..
mydevlogg.tistory.com
다른사람 코드
class Solution {
public int[] solution(long n) {
//12345 -> "12345"
String s = String.valueOf(n);
StringBuilder sb = new StringBuilder(s);
//"12345" -> "54321"
sb = sb.reverse();
//"54321" -> ["5","4","3","2","1"]
String[] ss = sb.toString().split("");
int[] answer = new int[ss.length];
for (int i=0; i<ss.length; i++) {
//["5","4","3","2","1"] -> [5,4,3,2,1]
answer[i] = Integer.parseInt(ss[i]);
}
return answer;
}
}
(주석은 내가 추가함)
reverse() 함수를 사용하면 간단히 뒤집기가 가능하다.. 이걸 몰랐네...
reverse 사용을 위해 자연수를 String 타입으로 변환하고 StringBuilder으로 바꿔준다
배열에 담아준 후 int 타입으로 변경해주면 끝
StringBuilder에 대해서는 더 알아보기로~
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/Java] LV.1 하샤드 수 (1) | 2022.09.20 |
---|---|
[프로그래머스/Java] LV.1 문자열 내 p와 y의 개수 (1) | 2022.09.20 |
[프로그래머스/Java] LV.1 평균 구하기 (0) | 2022.09.16 |
[프로그래머스/Java] LV.1 정수 제곱근 판별 (0) | 2022.09.14 |
[프로그래머스/Java] LV.1 자릿수 더하기 (0) | 2022.09.13 |