자바 숫자열 분리하기
이제 학원에서 곧 프로젝트를 들어가면 더욱 바빠질까봐 코딩테스트를 하나씩이라도 해보려고 합니다.
오늘은 프로그래머스에서 레벨 0짜리 숫자열 분리를 해야하는 문제를 풀었는데, 알고리즘을 떠올려 본적이 없다시피하다보니 한참을 돌고돌아 풀었습니다.
그리고 다른 분들의 풀이를 보니 아주 쉬운 개념이었어서 까먹지 않기 위해 이 글을 작성했습니다.
우선 예시를 바로 들고 하나하나 설명해보겠습니다.
예시 ) 12345의 숫자를 하나하나 분리하여 역순으로 배열에 저장하세요.
답 : numArray = {5,4,3,2,1};
소스 코드
int n = 12345; // 분리해야하는 숫자
String str = "" + n; // 12345 문자열 변환
int[] numArray = new int[str.length] // 배열의 크기 지정
for(int i=0; i < str.length; i++){
numArray[i] = n%10;
n = n/10;
}
설명
우선 변수 n은 분리해야하는 숫자이므로 따로 설명하지 않겠습니다. 문자형 변수 str은 배열을 선언하고 값을 넣을때, 해당 숫자의 길이 만큼 인덱스가 필요하므로 정수형 변수 n을 문자열로 변경하여 문자열의 길이로 배열의 크기와 반복문의 반복횟수를 지정했습니다. 여기서 문자열 str 의 길이와 숫자 n의 자릿수가 같다는 것을 알아야합니다.
그 다음 부분은 반복문 부분입니다. 숫자를 하나하나 떼어내어 역순으로 배열에 저장하는 부분이라고 생각하시면 됩니다.
이부분 역시 세분화하여 살펴보겠습니다.
numArray[0] = n%10;
여기서 n%10을 보시면 어떤 수여도 10으로 나누면 마지막 자릿수가 나머지로 나오는 것을 알 수 있습니다.
이후 n/10를 출력하면 마지막 자리수를 버림하는것을 확인할 수 있습니다.
위 작업을 반복 실행하면 1234에서 4가 나머지로 나와 배열에 삽입되고, n/10을 들리면 123, 다음 반복때는 123에서 3이 나머지이기 때문에 배열에 삽입되고 n/10에서 12...... 를 반복하면 각 숫자열을 분리하여 관리하는 것 입니다.
for문만 다음과 같이 변경하면 자릿수대로 배열에 저장할 수 있습니다.
int n = 12345; // 분리해야하는 숫자
String str = "" + n; // 12345 문자열 변환
int[] numArray = new int[str.length] // 배열의 크기 지정
for(int i=str.length-1; i >= 0; i--){
numArray[i] = n%10;
n = n/10;
}
for (int i = 0; i < numArray.length; i++) {
System.out.println(numArray[i]);
} // 출력문~~
위 결과를 출력해보겠습니다.
보시는 것처럼 숫자의 자릿수 순서대로 출력된 것을 확인할 수 있습니다.
오늘의 느낀점
코딩테스트를 전에도 준비하려했지만 혼자하기 쉽지 않았습니다. 새로운 분야를 하려고 하니 어떤 것을 어떻게 공부해야할지도 몰랐었습니다. 오늘 이번 문제를 계기로 어떻게 공부해야하는지 길이 트여진거 같아 속이 후련합니다.
혹시나 이 글을 보시게 되는 다른 분들도 화이팅하시길바랍니다.
'JAVA' 카테고리의 다른 글
[JAVA, JS]프로그램 변수란? (0) | 2023.07.05 |
---|---|
[JAVA] JAVA와 객체지향 언어의 특징 (0) | 2023.07.04 |
[TESTCode] AssertJ 빌드툴 추가 및 적용법 (0) | 2023.07.03 |
AssertJ에 대하여 (0) | 2023.04.24 |
Junit에 대하여 (0) | 2023.04.24 |