728x90
문제 설명
자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다.
제한 조건- n은 10,000,000,000이하인 자연수입니다.
내 풀이
import java.util.*;
class Solution {
public int[] solution(long n) {
int numOfDigits = (int) Math.log10(n) + 1; //n의 자릿수 구하는 방법
int[] answer = new int[numOfDigits];
for (int i = 0; i < numOfDigits; i++) {
answer[i] = (int) (n % 10);
n = n / 10;
}
return answer;
}
}
public class codingTest {
public static void main(String[] args) {
Solution T = new Solution();
System.out.println(Arrays.toString(T.solution(12345)));
}
}
처음에 int[] answer = new int[n] 했다가, 12345개의 배열이 생성됨 ;;ㅜㅜ
자릿수를 따로 구해야 한다. 나는 log 함수를 써서 구했다.
다른사람 풀이 1
import java.util.stream.IntStream;
class Solution {
public int[] solution(long n) {
return new StringBuilder().append(n).reverse().chars().map(Character::getNumericValue).toArray();
}
}
스트림을 이용한 풀이이다.
다른사람 풀이 2
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;
System.out.println(n);
cnt++;
}
return answer;
}
}
이 풀이는 자리수를 구하기 위해 n을 String으로 변환하고, 그 length를 구하는 방법을 사용했다.
'Back-end > Algorithm' 카테고리의 다른 글
[프로그래머스] 최대공약수와 최소공배수 (java) (0) | 2023.08.04 |
---|---|
[프로그래머스] 크기가 작은 부분문자열 (java) (0) | 2023.08.02 |
[프로그래머스] 나머지가 1이 되는 수 찾기 (java) (0) | 2023.07.30 |
[프로그래머스] 시저암호 (java) (0) | 2023.07.29 |
[프로그래머스] 삼총사 (java) (0) | 2023.07.28 |