Programmers Coding Quiz#273反転
7963 ワード
問題の説明
パラメータは自然数nを与える.nを三進法で前後に逆さまにし、それを十進法で表す数で返し、解関数を完成させる.
せいげんじょうけん nは1000000を超える自然数である. I/O例
nresult457125229
I/O例説明
答えは次のとおりです. n(10進):45 n(バイナリ):1200 前後反転(バイナリ):0021 十進法で表す:7 したがって7は
に答えるの2つの方法パターンの実施形態は類似している.逆シーケンスを実行する必要はなく、残りの部分を後ろに貼り付け、最後にintを使用してバイナリ文字列を10進数に変換します. 私の方法は、実際のプログラマーに適用すると、テストコードごとに実行時エラー/タイムアウトが発生します.耳が深くなって、whileドアが長すぎて、この2つの中の1つは、実は私はよく分かりません. 別の解釈
結論として,解題方式は似ているが,文処理は非常に直感的である.
divmodは使いませんがもっときれいです
パラメータは自然数nを与える.nを三進法で前後に逆さまにし、それを十進法で表す数で返し、解関数を完成させる.
せいげんじょうけん
nresult457125229
I/O例説明
答えは次のとおりです.
に答える
# 첫 번째 방법(재귀함수사용)
def ternary(n, result):
a = divmod(n, 3)
if a[0] == 1 or a[0] == 2:
result = result + str(a[1]) + str(a[0])
return result
else:
result = result + str(a[1])
return ternary(a[0], result)
def solution(n):
return int(ternary(n, ''), 3)
# 두 번째 방법(while문 사용)
def solution(n):
result, number = '', n
while True :
a = divmod(number, 3)
if a[0] == 1 or a[0] == 2:
result = result + f'{a[1]}' + f'{a[0]}'
break
else:
result = result + f'{a[1]}'
number = a[0]
return int(result, 3)
def solution(n):
tmp = ''
while n:
tmp += str(n % 3)
n = n // 3
answer = int(tmp, 3)
return answer
簡単な思考はいつも難しい.結論として,解題方式は似ているが,文処理は非常に直感的である.
divmodは使いませんがもっときれいです
Reference
この問題について(Programmers Coding Quiz#273反転), 我々は、より多くの情報をここで見つけました https://velog.io/@keywookim/Programmers-Coding-Quiz-26-3진법-뒤집기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol