프로그래머스 Level 1
🔒 3진법 뒤집기
자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.
n | result |
---|---|
45 | 7 |
125 | 229 |
입출력 예#1
n (10진법) | n (3진법) | 앞뒤 반전(3진법) | 10진법으로 표현 |
---|---|---|---|
45 | 1200 | 0021 | 7 |
입출력 예#2
n (10진법) | n (3진법) | 앞뒤 반전(3진법) | 10진법으로 표현 |
---|---|---|---|
125 | 11122 | 22111229 |
class Solution {
public int solution(int n) {
String three = Integer.toString(n,3);
StringBuffer sb = new StringBuffer(three);
String reverse = sb.reverse().toString();
int answer = Integer.parseInt(reverse,3);
return answer;
}
}
3진법을 만들기 위해 3을 나누고 나머지를 구하고 그래야하나...? 싶어서 냅다 검색해봤는데 방법이 있었다.
Integer.toString(int n, int radix)
를 사용하면 int형을 주어진 진법의 문자열로 변환한다. 각각 n
과 3을 넣어줘서 n
을 3진법으로 바꾼 후 문자열 three
로 정의하였다.
문자열의 앞뒤를 바꾸는 방법으로는 StringBuffer
의 reverse
를 사용하였다.
StringBuffer
에 three
를 입력해주고 reverse()
메소드를 호출하여 StringBuffer
의 문자열을 거꾸로 뒤집준다.
이 때, reverse()
는 StringBuffer 객체를 리턴하기 때문에 toString()
을 사용하여 문자열로 변환해준다.
변경된 값을 다시 10진법으로 변환할 때는 Integer.parseInt(String s, int radix)
를 사용했다.변환할 값과 변환할 진수값을 입력하면 해당 진수에 맞게 Integer형으로 반환해준다.
📑 참고 자료
진법 변환
- https://cornarong.tistory.com/48
- https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=artistofsoul&logNo=122345471
- https://jamesdreaming.tistory.com/125
문자열 거꾸로 뒤집기
궁금해서 한번 검색했다가 그 뒤로 전체 코드가 인터넷 복붙이 되어버렸다.
구글없이 코딩하는 개발자 없다고는 하지만 꽁기꽁기하다...
검색이 편하긴 해도 다음엔 노가다라도 일단 해보고 검색해야지!