반응형
자연수 뒤집어 배열로 만들기
문제 설명
자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를 들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다.
예시
n | return |
12345 | [5, 4, 3, 2, 1] |
코드 해석 및 전체 코드
알고리즘
1. n의 길이 구하기
2. 길이만큼 배열 선언
3. n의 끝자리부터 인덱스 0부터 차례대로 넣기
1. n의 길이 구하기
n을 뒤집어 각 자리 숫자를 원소로 가지는 배열을 만들기 위해
배열을 선언할 때 필요한 길이를 구해야한다.
long 타입의 num을 n으로 초기화하고 길이를 나타낼 int 타입의 cnt를 선언한다.
num이 0이 아닐 때까지 num을 10으로 나누면서 cnt를 증가시킨다.
12345 / 10 = 1234 | 1234 / 10 = 123 | 123 / 10 =12 | 12 / 10 = 1 | 1 / 10 = 0 |
+1 | +1 | +1 | +1 | +1 |
cnt = 5이다.
2. 배열 생성
배열의 길이를 cnt로 하여 배열을 선언한다.
3. n의 끝자리부터 인덱스 0부터 차례대로 넣기
단순히 뒤집는 거라면 while문을 사용하여 num이 0이 아닐 때까지 반복하면 되지만 배열의 방에 값을 저장해야 하므로 for문을 사용하여 num이 0이 아닐 때까지 반복한다.
answer[i]에 num의 마지막 자릿수를 넣는다. num % 10은 num을 10으로 나누었을 때의 나머지 값으로 1의 자릿수이다.
다음 1의 자리수를 구하기 위해 num을 10으로 나누어준다.
num % 10 | 5 | 4 | 3 | 2 | 1 |
num | 1234 | 123 | 12 | 1 | 0 |
class Solution {
public int[] solution(long n) {
long num = n;
int cnt = 0;
while(num != 0){
num /= 10;
cnt++;
}
int[] answer = new int[cnt];
num = n;
for(int i = 0; num != 0; i++){
answer[i] = (int)(num % 10);
num /= 10;
}
return answer;
}
}
속도
참고 메서드
문자열 뒤집기 StringBuilder sb.reverse() int → String 타입 변환 String.valueOf(i) |
반응형
'코딩 테스트 > [JAVA] programmers 코딩 테스트 연습' 카테고리의 다른 글
[Programmers/JAVA] 짝수와 홀수 / 프로그래머스 코딩 테스트 연습 (0) | 2021.06.11 |
---|---|
[Programmers/JAVA] 정수 제곱근 판별 / 프로그래머스 코딩 테스트 연습 (0) | 2021.06.11 |
[No.17] 자릿수 더하기 / 프로그래머스 코딩 테스트 연습 JAVA (0) | 2021.06.10 |
[No.16] 이상한 문자 만들기/ 프로그래머스 코딩 테스트 연습 JAVA (0) | 2021.06.09 |
[No.15] 약수의 합 / 프로그래머스 코딩 테스트 연습 JAVA (0) | 2021.06.09 |
댓글