*문제
*풀이
class Solution {
public long[] solution(long n) {
//1
String str = String.valueOf(n);
long answer[] = new long[str.length()];
//2
int i = 0;
//3
while(n != 0){
answer[i] = n%10;
n /= 10;
i++;
}
return answer;
}
}
- 배열의 크기 지정
- 자연수 n을 String.valueOf()를 이용해 문자열로 변환 => toString()으로도 문자열 변환이 가능하다.
- 문자열 str이 length()를 참조 => 문자열의 길이(즉, 자연수의 자릿수) 구함
- .length => 배열의 길이
- .length() => 문자열의 길이
- 배열 크기 = 자연수의 자릿수
- 반복문 초기식 선언
- n이 0이 될때까지 반복문 돌림
- answer[i] = n%10; => 배열 answer에 n을 10으로 나누고 나온 나머지 값(즉, 마지막 자릿수)을 대입
- n /= 10; => n = n/10; 으로 기존의 n값을 10으로 나누면 소수점 뒷자리 수는 사라진다(마지막 자릿수 제거)
- i++; => 인덱스 i 증감식
✔️다른 풀이
import java.util.stream.IntStream;
class Solution {
public int[] solution(long n) {
return new StringBuilder().append(n).reverse().chars().map(Character::getNumericValue).toArray();
}
}
- new StringBuilder() => StringBuilder 객체 생성
- StringBuilder는 가변(mutable)하며, 문자열을 수정하거나 연결하는 데 사용됨
- append(n) => StringBuilder에서 제공하는 함수로 정수 n을 문자열로 변환하여 추가
- reverse() => StringBuilder에 추가된 문자열을 뒤집음
- chars() => StringBuilder의 문자열을 IntStream으로 변환
- map(Character::getNumericValue) => 각 문자에 대해 getNumericValue 함수를 사용하여 문자를 해당하는 숫자 값으로 변환
- map 연산은 스트림에서 각 요소에 변환을 적용하고, 최종적으로 변환된 요소들로 구성된 새로운 스트림을 생성
- ::는 메서드 레퍼런스(method reference)를 나타내는 연산자입니다. 메서드 레퍼런스는 람다 표현식을 간결하게 나타내는 방법 중 하나로, 이미 존재하는 메서드를 호출하는 데 사용
- Character클래스에 정의된 getNumericValue 메서드를 실행한다
- toArray() => 최종적으로 IntStream의 요소들을 정수 배열로 변환 (정수 => 정수배열)
'코딩테스트' 카테고리의 다른 글
[프로그래머스] - 정수 제곱근 판별 (0) | 2024.01.15 |
---|---|
[프로그래머스] - 문자열 내 p와 y의 개수 (0) | 2024.01.11 |
[프로그래머스] - 자릿수 더하기 (0) | 2024.01.09 |
[프로그래머스] - x만큼 간격이 있는 n개의 숫자 (0) | 2024.01.04 |
[프로그래머스] - 문자열을 정수로 바꾸기 (0) | 2024.01.04 |