ㅋㅋ
난 정말 힘들게 풀었는데
Integer 클래스 활용을 제대로 하지 못해서 고생한 거였다 🤣
그리고 너무 어렵게 생각했던것도 한몫함..😔
class Solution {
public int solution(int n) {
int answer = 0;
String third = Integer.toString(n, 3);
StringBuffer sb = new StringBuffer(third);
String reversed = sb.reverse().toString();
answer = Integer.parseInt(reversed, 3);
return answer;
}
}
헛웃음만 나온다 진짴ㅋㅋㅋㅋ
위에 코드는 한줄로도 됨..
class Solution {
public int solution(int n) {
return Integer.parseInt(new StringBuffer(Integer.toString(n, 3)).reverse().toString(), 3);
}
}
그리고 계산 하는 방법도 배울 수 있었다. _ 프로그래머스 다른사람 코드 첫번째
String a = "";
while(n > 0){
a = (n % 3) + a;
n /= 3;
}
이렇게 하면 쉽게 3진수로 계산이 되었다.
뒤집힌 3진수를 만들려면
String a = "";
while(n > 0){
a += n % 3;
n /= 3;
}
이렇게 a 문장만 바꿔주면 된다.
new StringBuffer(" str ").reverse().toString();
n = 10진수 숫자
// 3진수로 변환
String str = Integer.toString(n, 3);
// 3진수 문자열을 10진수로 변환
int num = Integer.parseInt(str, 3);
String a = "";
while(n > 0){
a = (n % 3) + a;
n /= 3;
}
class Solution {
public int solution(int n) {
int answer = 0;
int base = 3;
String samJinSu = makeReverseSamJinSu(n, 1, base, "");
answer = Integer.parseInt(samJinSu.substring(samJinSu.length()-1));
for (int i = samJinSu.length() - 2; i >= 0; i--) {
answer += Integer.parseInt(samJinSu.charAt(i) + "") * base;
base *= 3;
}
return answer;
}
String makeReverseSamJinSu(int num, int x, int base, String result) {
if (num / x < base) {
result = num / x + result;
if (num % x != 0) {
num = num % x;
x /= base;
} else {
return result;
}
} else {
if (!"".equals(result)) result = 0 + result;
x *= base;
}
return makeReverseSamJinSu(num, x, base, result);
}
}
코드 작성 다 하고 정답 떠서 엄청 뿌듯했는데~~ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
두시간 걸림 🥲
심지어 메모도 했는뎅..........
오늘의 배운점 :
제공되는 클래스를 잘 활용하자!
고민을 조금 더 해보고 문제를 풀자
처음 풀어본 날 : 23.03.26 ~ 28