본문 바로가기

카테고리 없음

Programmers. 자연수 뒤집기

자연수 뒤집기

[기본 상태]

class Solution {
    public int[] solution(long n) {
        int[] answer = {};
        return answer;
    }
}

[풀이에 필요한 조건]

배열의 길이를 정하기 위해 지급받는 값 n의 자릿수를 구해줘야함.

long 형태의 자료를 int로 강제 변환하여 log 계산을 통해 제곱수를 구하고 +1을 더해 자리수를 계산해줌.

Math.log10(n)+1

ex) Math.log10(1000) = 3, 1천의 자리까지 1자리 추가

 

배열 입력과 제곱식을 구하기위해 for문 작성.

 

Math.pow(a, b) (a의  b승) 을 사용하기 위해 data가 double 형태가 되어야함.

double 형태로 계산값을 받기 위해 insert_n을 선언하고,

double 형태로 변환한 n을 이용하여 나머지 계산 후 나누기 계산을 통해 ( i+1)번째 자리값의 데이터를 남김.

 

int 형태로 변환한 insert_n 값을 배열에 추가.

 

i = 0, 12345 % 10 = 5 /1 = 5
i = 1, 12345 % 100 = 45 /10 = 4.5
i = 2, 12345 % 1000 = 345 /100 = 3.45
i = 3, 12345 % 10000 = 2345 /1000 = 2.345
i = 4, 12345 % 100000 = 12345 /10000 = 1.2345
나머지 계산 Math.pow(10,i+1)
나누기 계산 Math.pow(10,i)

[해답]

class Solution {
public int[] solution(long n) {
int n_length = (int)(Math.log10(n)+1);
int[] answer = new int[n_length];

for(int i=0 ; i<n_length ; i++){
double insert_n = (double)n%Math.pow(10,i+1)/Math.pow(10,i);
answer[i]=(int)insert_n;
}
return answer;
}
}

더보기
class Solution {
public int[] solution(long n) {
int n_length = (int)(Math.log10(n)+1);
int[] answer = new int[n_length];

for(int i=0 ; i<n_length ; i++){
//i = 0, 12345 % 10 = 5 /1 = 5
//i = 1, 12345 % 100 = 45 /10 = 4
//i = 2, 12345 % 1000 = 345 /100 = 3
//i = 3, 12345 % 10000 = 2345 /1000 = 2
//i = 4, 12345 % 100000 = 12345 /10000 = 1
//System.out.println(Math.pow(10,i+1));
//System.out.println(Math.pow(10,i));

double insert_n = (double)n%Math.pow(10,i+1)/Math.pow(10,i);

answer[i]=(int)insert_n;
}
return answer;
}
}

public class Main {
public static void main(String[] args) {
Solution sol = new Solution();

long n1 = 12345;

int[] result1 = sol.solution(n1);

System.out.print("{");
for(int i=0 ; i<(int)(Math.log10(n1)+1) ; i++ ){
if(i==(int)(Math.log10(n1))){
System.out.print(result1[i]);
}
else{
System.out.print(result1[i] + " , ");
}
}
System.out.print("} \n");
}
}
더보기

//reverse()로 뒤집어서 String으로 저장하고, answer에 순서대로 넣어주는 방법.

class Solution {
public int[] solution(long n) {
String s = String.valueOf(n);
StringBuilder sb = new StringBuilder(s);
sb = sb.reverse();
String[] ss = sb.toString().split("");

int[] answer = new int[ss.length];
for (int i=0; i<ss.length; i++) {
answer[i] = Integer.parseInt(ss[i]);
}
return answer;
}
}