컴공생의 발자취

[ 99클럽 코테 스터디 5일차 TIL ] 자바 동적 배열 선언 및 형변환 (long to String) 본문

💡 코테/99클럽

[ 99클럽 코테 스터디 5일차 TIL ] 자바 동적 배열 선언 및 형변환 (long to String)

MNY 2024. 4. 1. 23:43
728x90
반응형
💡 오늘의 학습 키워드

- 자바 배열 선언
- 형변환
    * long to String

 

자바 배열 선언

* new 연산자로 배열 생성

: 값의 목록을 가지고 있지 않지만, 향후 값들을 저장할 배열을 미리 만들고 싶다면 new 연산자로 다음과 같이 배열 객체를 생성할 수 있다.

타입[] 변수 = new 타입[길이];

 

길이는 배열이 저장할 수 있는 값의 개수를 말한다. 이미 배열 변수가 선언된 경우에도 new 연산자로 배열을 생성할 수 있다.

타입[] 변수 = null;
변수 = new 타입[길이];

 

* 값 목록으로 배열 생성

:값의 목록이 있다면 다음과 같이 간단하게 배열 객체를 생성할 수 있다.

타입[] 변수 = { 값0, 값1, 값2, 값3, ... };

 

배열 변수를 미리 선언한 후 값 목록들이 나중에 결정되는 상황이라면 다음과 같이 new 연산자를 사용해서 값 목록을 지정해주면 된다. new 연산자 바로 뒤에는 배열 변수 선언에서 사용한 "타입[]"을 붙여주고 중괄호 {}에는 값들을 나열해준다.

타입[] 변수 = null;
변수 = new 타입[] { 값0, 값1, 값2, 값3, ... };

* 형변환 안전장치

모든 기본 타입에 대해 최댓값(max)과 최소값(min)을 다음과 같이 상수로 제공하고 있다. (boolean과 char 타입 제외)

 

형변환

* long to String : long형을 문자열로 변환하기

  • Long.toString(String str)
long val = 200;
String str = String.valueOf(val);

System.out.println(str);

// result : 200

 

  • String.valueOf(String str)
long val = 200;
String str = Long.toString(val);

System.out.println(val);

// result : 200
 

 

오늘의 회고

문제  : [자연수 뒤집어 배열로 만들기]

  • 어떤 문제가 있었고, 나는 어떤 시도를 했는지

입력된 자연수의 값을 일의자리부터 시작해서 n의 자리까지의 숫자를 배열 형태로 리턴해주는 문제였다.

입력값은 int의 범위를 넘는 10,000,000,000이하인 자연수이다.

 

배열에 넣는 과정은

  • answer[i] = 입력받은 값 % 10
  • 입력받은 값 = 입력받은 값 / 10

이 과정을 거치는 거였다. 

 

그런데 대략적인 과정은 생각했는데, 숫자의 자리 수만큼을 배열을 만들어야 되는데...

이 부분에서 고민하다가 배열의 동적 선언과 숫자의 자리 수 계산을 검색해보았다.

숫자의 자리 수 계산은 함수도 있었지만, 숫자를 문자로 변환한 후 그 문자의 길이를 구하는 것으로 선택했다.

음수라면 조건식이 하나 더 들어가겠지만 자연수이기에 그러한 조건식은 들어가지 않는다.

 

  • 어떻게 해결했는지
// input : 자연수(int의 값을 넘음 = long)

// 변수 : 자리 수
// 자리 수 구하기
    // 문자열로 변경 후 문자열의 길이 구하기
// answer의 크기 자리 수로 지정
// 자리 수 만큼 반복
    // answer = 입력받은 값을 10으로 나눈 나머지
    // 입력받은 값 = 입력받은 값을 10으로 나눈 몫

// return : 자연수 뒤집은 배열

class Solution {
    public int[] solution(long n) {
        int len = Long.toString(n).length();
        int[] answer = new int[len];
        
        for (int i = 0; i < len; i++) {
            answer[i] = (int)(n % 10);
            n = n / 10;
        }
        
        return answer;
    }
}

 

  • 무엇을 새롭게 알았는지

오늘은 자바의 동적 배열 선언과 long to String의 형변환 함수에 대해 알 수 있었다.

그리고 숫자의 자리 수를 계산할 때 반복문을 쓰는 방법도 있겠지만, 문자열로 변경한 후 그 문자열의 길이를 계산하는 방식으로도 자리 수를 구할 수 있다는 새로운 방식을 습득했다.

 

내일 학습할 것은 무엇인지

  • 빅분기 자격증 공부!!!
  • 클럽99 코딩테스트
728x90
반응형