# 문제
https://school.programmers.co.kr/learn/courses/30/lessons/68935
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
자연수 n이 매개변수로 주어집니다.
n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.
# 풀이 (자바)
class Solution {
public int solution(int n) {
int answer = 0;
String str = "";
int len = 0;
// 3진법
while (n > 0) {
str = (n % 3) + str;
n = n / 3;
}
// 앞뒤 반전
StringBuffer sb = new StringBuffer(str);
String reversedStr = sb.reverse().toString();
// 10진법
len = reversedStr.length();
answer = Character.getNumericValue(reversedStr.charAt(reversedStr.length() - 1));
for (int i = 0; i < reversedStr.length() - 1 ; i++) {
answer = (int) (answer + (Math.round(Math.pow(3, len-i-1)) * Character.getNumericValue(reversedStr.charAt(i))));
}
return answer;
}
}
#느낀점
3진법 -> 10진법 변환을 효율적으로 생각하지 못했었다..
문제 풀고 다른 풀이를 보니까 Integer.parseInt(숫자, 기존 base) 로 다른 base 의 진법을 10진법으로 바꿀 수 있더라... ㅇ0ㅇ...!!
'𝑪𝒐𝒅𝒊𝒏𝒈 𝑻𝒆𝒔𝒕' 카테고리의 다른 글
[프로그래머스] 삼각 달팽이 (0) | 2022.10.19 |
---|---|
[프로그래머스] 두 개 뽑아서 더하기 (0) | 2022.10.19 |
[프로그래머스] 약수의 합 (0) | 2022.10.13 |
[프로그래머스] 소수 만들기 (0) | 2022.06.01 |
[프로그래머스] 로또의 최고 순위와 최저 순위 (0) | 2022.04.15 |