[プログラマー][java]3進反転
質問リンク-https://programmers.co.kr/learn/courses/30/lessons/68935トラブルシューティング
これは の10進数を3進数に変換した後、10進数に変換する問題です.
十進法を三進法にする
10->3->1->0(シェア)
-----1->0->1----(残り)->101反転時は101
45->15->5->1->0(シェア)
------0-----2-----(残り)->0021反転1200
ということで、シェアが0になるまで残りの3を3で割っておき、保存してからひっくり返して終了!
バイナリを10進数に変換する方法->各ビット数に3を乗じた平方数!
1 2 0 0 -> 1 x 3^3 + 2 x 3^2 + 0 x 3^1 + 0 x 3^0 ->45
これは
十進法を三進法にする
10->3->1->0(シェア)
-----1->0->1----(残り)->101反転時は101
45->15->5->1->0(シェア)
------0-----2-----(残り)->0021反転1200
ということで、シェアが0になるまで残りの3を3で割っておき、保存してからひっくり返して終了!
バイナリを10進数に変換する方法->各ビット数に3を乗じた平方数!
1 2 0 0 -> 1 x 3^3 + 2 x 3^2 + 0 x 3^1 + 0 x 3^0 ->45
class Solution {
public int solution(int n) {
StringBuilder sb = new StringBuilder();
while(true){ //나누면서 계속 저장
if(n==0) break;
sb.append(String.valueOf(n%3));
n/=3;
}
Long third = Long.valueOf(sb.toString()); //이미 뒤집힌 상태
int cnt = 0;
int result=0;
while(true){ //3진법을 10진법으로
if(third==0) break;
else{
result+=(third%10)*Math.pow(3,cnt);
third/=10;
cnt++;
}
}
return result;
}
}
Reference
この問題について([プログラマー][java]3進反転), 我々は、より多くの情報をここで見つけました https://velog.io/@guswls159357/프로그래머스java-3진법-뒤집기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol