[ 99클럽 코테 스터디 5일차 TIL ] 자바 동적 배열 선언 및 형변환 (long to String)
💡 오늘의 학습 키워드
- 자바 배열 선언
- 형변환
* 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 코딩테스트