テストエンコーディング|(JavaScript)プログラマー:バイナリの反転
に質問
パラメータは自然数nを与える.nを三進法で前後に逆さまにし、それを十進法で表す数で返し、解関数を完成させる.
制限
🎹📢I/O例
ほどく
function solution(n) {
let answer = 0;
let trit = ''
// 3진법 구하기 인수분해
while (n > 0) {
trit = n % 3 + trit
n = parseInt(n / 3)
}
const reverseTrit = trit.split('').reverse()
const length = reverseTrit.length
let pow = 1
// 10진법으로 변환
for (let i = 0; i < length; ++i) {
answer += reverseTrit[length - 1 - i] * pow
pow *= 3
}
return answer
}
これは簡単な問題だと思いますが、10進数に変換する過程で、コードをきれいに書きたいので、[length - 1 - i]
という順序ルールを探すのにも時間がかかりました.Math.pow()は知っていますが、powを直接実現して試してみるべきだと思います.これは簡単ですが、無駄なことをしました.でも面白い質問です!🎈他人の解答
const solution = (n) => parseInt([...n.toString(3)].reverse().join(""), 3);
他人の答えを見て...javascriptの内蔵関数が非常に強いことを改めて感じました...そんなに简単に表现できるのは本当にすばらしいです!!よく使う関数ですが、無視しました.参考資料とサイト(ありがとうございます)
Reference
この問題について(テストエンコーディング|(JavaScript)プログラマー:バイナリの反転), 我々は、より多くの情報をここで見つけました https://velog.io/@goblin820/코딩테스트-JavaScript-프로그래머스-3진법-뒤집기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol