메모

자리수 구하기 + 정수의 자리수 숫자 뽑아내기

양빵빵 2022. 6. 14. 17:26

======  # 자리수 구하기 # ======

int digit = 0;
for (int n : arr) {
   int len = String.valueOf(n).length();
   if(len > digit) {
       digit = len;

n이 1410 일때

len은 = "1410" 의 길이 # 4가 된다.

 

if(len > digit)는 배열 중에 가장 큰 자리수를 구하려는 조건문 이다.

{ digit 가 0 인 상태에서 len과 크기를 비교하면 digit는 처음 들어오는 숫자로 초기화 된다.

  그 다음 부터는 가장 큰 자리수를 가진 n의 len이 digit가 되게 된다.

}

 

 

===== # 정수의 각 자리수에 있는 수 뽑아내기 # =====

/*
753 일때
i = 0 일때는  3 뽑아야함
i = 1 일때는  5 뽑아야함
i = 2 일때는  7 뽑아야함

753 / 1 % 10 ==> 3
753 / 10 % 10 ==> 5
753 / 100 % 10 ==> 7

target / 10^i %10
 */

 

결국 식은 target / 10의 i 제곱( i=0 부터 ++) % 10 

 target에 10의 i제곱을 나누고 10으로 나눈 몫이 해당 수의 자리수 이다.

 

i가 0 이면 1의자리

i가 1이면 10의 자리..

이런 식으로

 

JAVA에서는 ** 을 지원하지 않아서 Math.pow를 사용

Math.pow는 return 타입이 double 이므로 int로 다운캐스팅을 해줘야 함.

pow(10의 i 제곱)

int n = arr[j] / (int)Math.pow(10,i) % 10; // n은 ex) 753의 1의 자리수인 3 or 10의 자리수인 5 ..