문제 링크
https://school.programmers.co.kr/tryouts/71851/challenges
💡 문제 해결 방법
이 문제에서 가장 중요한 부분은 형 변환과 배열 저장이다.
1.long 형태의 변수를 String형으로 변환 -> Long.toStinrg 사용
2.string 형태를 char 리스트 형태로 변환 -> 변수명.toCharArray() 사용
3.for문 돌면서 인덱스 하나하나 char->int 형으로 변환 후 int 형 배열 리스트에 저장 -> for문 사용 및 char->int형으로 변환
4.출력
💻 코드
import java.util.Arrays;
class Solution {
public int[] solution(long n) {
String num = Long.toString(n);
char[] num_list=num.toCharArray();
int[] answer = new int[num_list.length];
for(int i=num_list.length-1; i>=0; i--){
int new_num = num_list[i]-'0';
answer[num_list.length-1-i]=new_num;
}
// System.out.println(Arrays.toString(answer));
return answer;
}
}
다른 사람 풀이
import java.util.stream.IntStream;
class Solution {
public int[] solution(long n) {
return new StringBuilder().append(n).reverse().chars().map(Character::getNumericValue).toArray();
}
}
대단한 사람들..! 어떻게 한줄로 풀었지..
먼저 여기서 사용된 StringBuilder는 String과 문자열을 더할 때 새로운 객체를 생성하는 것이 아니라 기존의 데이터에 더하는 방식을 사용하기 떄문에 속도도 빠르고 상대적으로 부하가 적다고 한다.
append를 통해 n을 넣어주고,
reverse는 문자열을 뒤집는다. 파이썬에서만 적용되는 줄 알았더니 java에서도 적용되나보다
map(Character :: getNumericValue)는 숫자형태의 char형을 int형으로 변환해준다.
toArray는 list형태의 값을 배열로 형변환 시켜주는 역할을 한다.
'알고리즘 > Java 코테' 카테고리의 다른 글
프로그래머스 level 1 체육복 (0) | 2023.09.12 |
---|