반응형
프로그래머스 자연수 뒤집어 배열로 만들기 - JAVA
문제 설명
- 자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴.
예를들어 n이 12345이면 [5,4,3,2,1]을 리턴.
제한 조건
- n은 10,000,000,000이하인 자연수입니다.
문제 풀이 v1
- n % 10을 함으로서 n의 일의자리수를 알 수 있다.
- n / 10을 함으로서 n의 일의자리가 제거되고 십의 자리가 일의자리가 된다.
- 1 ~ 2를 n이 0이 될때까지 반복함으로 n을 뒤에서부터 한 자리씩 리스트에 저장.
- 리스트의 내용을 answer배열로 넣어 return.
소스 코드 v1
import java.util.*;
class Solution {
public int[] solution(long n) {
List<Integer> list = new ArrayList<>();
while(n != 0) {
list.add((int)(n % 10));
n /= 10;
}
int[] answer = new int[list.size()];
for (int i = 0; i < list.size(); i++) {
answer[i] = list.get(i);
}
return answer;
}
}
문제 풀이 v2
- 문자열 s를 ""와 n을 더해줌으로 n을 문자열로 만들 수 있다.
- answer배열을 s의 길이까지 만들어주고, s의 마지막 문자를 배열에 추가 후 return.
BUT! 문자열로 변경하고 다음과 같이 할경우 가독성이 좋고 코드는 짧아지더라도, 실행속도에서 100배 정도 더걸리는 단점이 있다.
소스 코드 v2
class Solution {
public int[] solution(long n) {
String s = "" + n;
int[] answer = new int[s.length()];
for (int i = 0; i < s.length(); i++) {
answer[i] = s.charAt(s.length() - i - 1) - '0';
}
return answer;
}
}
반응형
'알고리즘(Algorithm) > 프로그래머스(Programmers)' 카테고리의 다른 글
[프로그래머스] 정수 제곱근 판별 - JAVA (0) | 2021.11.02 |
---|---|
[프로그래머스] 정수 내림차순으로 배치하기 - JAVA (0) | 2021.11.01 |
[프로그래머스] 자리수 더하기 - JAVA (0) | 2021.10.31 |
[프로그래머스] 이상한 문자 만들기 - JAVA (0) | 2021.10.31 |
[프로그래머스] 약수의 합 - JAVA (0) | 2021.10.29 |