👀 문제
https://programmers.co.kr/learn/courses/30/lessons/12932
👊 도전
1. 설계
- 10으로 나눈 나머지를 차례대로 배열에 넣는다.
2. 구현 (성공 코드)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/**
*
* @author HEESOO
*
*/
class Solution {
public int[] solution(long n) {
int[] answer = {};
String size=""+n;
answer=new int[size.length()];
int i=0;
while(n>0){
answer[i]=(int)(n%10);
n=n/10;
i++;
}
return answer;
}
}
3. 결과
🤟 성공 🤟
4. 설명
- n의 길이를 알기위해 String형으로 변환한다.
- string형과 int, long 등의 숫자형이 연결되면 string이 된다.
- 따라서 앞에 아무것도 없는 “” String을 붙여 형변환한다.
- n을 일의자리부터 넣으면 되므로 10으로 나눈 나머지를 차례대로 배열에 넣는다.
- 나머지는 배열에, 몫은 n이 되어 계속 진행한다.
- while문에서 answer[i]에 값을 넣을 때 형변환이 필요하다. 이때 n%10에 괄호를 치지 않으면 int형변환이 n에서만 이루어지므로 값 손실이 일어날 수 있다. 따라서 괄호가 필요하다.
👏 해결 완료!
문제를 제대로 읽지 않고 내림차순 정렬해라는 의미인 줄 알았다. 그래서 long을 String으로 변환 후 배열에 저장하여 내림차순 정렬했다가 틀렸음을 알았다. 앞으로는 문제를 똑바로 읽는 습관을 들이고, 위 코드와 같이 수학적으로 푸는 연습을 해야겠다. 저 코드를 보기 전에는 막연히 형변환으로 숫자를 뒤집어야겠다고 생각했기 때문이다.