
class Solution {
public int solution(int n) {
StringBuilder stringBuilder=new StringBuilder();
while(n!=0){
stringBuilder.insert(0,n%3);
n/=3;
}
String a=stringBuilder.reverse().toString();
return Integer.parseInt(a,3);
}
}
10진수를 읽어와 3진수로 변환하고, 변환한 것을 뒤집어서 다시 십진수로 읽어오는 문제이다.
StringBuilder 와 Integer.parseInt() 메서드를 이용하면 쉽게 해결할 수 있지만, 만약 사용법을 모르고 있는 상태에서 시험 문제로 나왔다 생각하면 살짝 힘들어진다.
Stringbuilder을 통해 십진수를 삼진수로 변환하는 과정을 문자열로 이어 붙히고, reverse 함수를 통해 문자열을 뒤집을 수 있다.
그리고 parseInt() 메소드를 통해 문자열을 삼진수로 읽어들여 10진수로 변환할 수 있다.
Stringbuilder은 앞으로 사용할 일이 많을 것 같으니 미리 사용법을 익혀두는 것이 좋을 것 같다.
그리고 +연산을 통해 문자열을 이어 붙일수도 있지만, 이는 문자열의 할당과 해제를 반복하는 작업이므로 메모리와 성능 측면에서 좋지 않다고 한다. 하지만 StringBuilder을 사용하면, 하나의 메모리 공간에서 값을 수정만 하면 되기 때문에 훨씬 더 효율적이라고 한다.

출처 : 프로그래머스 코딩 테스트 연습 https://school.programmers.co.kr/learn/challenges