📟시도 - 배열로 문제풀이
import java.util.*;
class Solution {
public int solution(int n) {
int answer = 0;
int count = 0;
int[] arr = new int[count];
while(n != 0){
arr[count] = n%3;
n = n/3;
count++;
}
Arrays.sort(arr, Comparator.reverseOrder());
for(int i=0; i<arr.length; i++){
answer += 3^i * arr[i];
}
return answer;
}
}
🤷 문제점
위에 카운터를 선언한 시점에서 배열은 이미 0으로 고정 -> 바꿀 수 없다.
while
문에서 반영된 카운트를 넣으려면 동적 배열인컬렉션
을 사용해야한다.
Arrays.sort(arr);
,Arrays.sort(arr, Comparator.reverseOrder());
배열을 오름차순, 내림차순으로 재배열 시켜주는 메서드, -> 내림차순은 오직 래퍼타입 배열만 사용가능 -> 기본타입 사용 불가능
여기서는 배열이 아닌, 컬렉션 리스트와 내림차순 사용
배열
Arrays.sort(arr) -> 오름차순
Arrays.sort(arr, Comparator.reverseOrder()) -> 내림차순(래퍼타입만 가능)
컬렉션
Collections.sort(list) -> 오름차순
Collections.sort(list, Collections.reverseOrder()) -> 내림차순
Collections.reverse(list) -> 리스트 뒤집는 라이브러리 메서드 / 배열은 x
💻수정
import java.util.*;
class Solution {
public int solution(int n) {
int answer = 0;
int count = 0;
List<Integer> arr = new ArrayList<>();
while(n != 0){
arr.add(n%3);
n = n/3;
count++;
}
Collections.reverse(arr);
for(int i=0; i<arr.size(); i++){
answer += Math.pow(3, i) * arr.get(i);
}
return answer;
}
}
3승을 표현하기 위해서
Math.pow(3, i)
사용