[プログラマー]秘密の地図
1762 ワード
こんにちは。
MINDOLです
今は7月中旬で暑すぎます
一人で家でエアコンをつけるのが惜しいので、家の近くの喫茶店に避暑に来ました.
家の近くの小さな喫茶店は人が多くなくて、とても良くて、広まったかどうか分かりませんが、今ではほとんど1万枚のテーブルがあります.
それはつまらないですね.アルゴリズムの問題を見てみましょうか.
質問リンク
秘密の地図
隠れたへそくりの位置を教えてくれる秘密の地図
(でも解読してもどこにへそくりがあるかわからない…)
へそくりを見つけるために、問題を解決しましょう.
整理する
整数をバイナリで表し、ビット演算子を使用できる場合は、これは容易に解決できる問題です.
Pythonで解読したコードを見て...!
def solution(n, arr1, arr2):
answer = []
for i in range(n):
str = ""
ret = arr1[i] | arr2[i] # 비트 연산자 사용
cnt = 0
while cnt < n: # 지도 크기 n만큼 수행
if ret % 2 == 1: # 일의 자릿수가 2로 나누어떨어지지 않으면
str = '#' + str # '#' 추가
else :
str = ' ' + str # 나누어떨어지면 ' ' 공백 추가
ret //= 2 # 다음 자릿수로 이동
cnt += 1
answer.append(str) # 문자열 추가
return answer
整数を計算せずにバイナリ文字列に変換し、数学的に分割して文字列を作成します.奇数の場合は、2進数日の桁数を1として2に分けて繰り返し、必要な値を得ることができます.
私のように、文字列を作成するときは、数値桁数から文字に変更されるため、既存の文字列の前に「#」または「」を付ける必要があります.
どうですか.ビット演算子しか知らない場合は、これは容易に解決できる問題です.
参考までに、私のように繰り返し文を使用してカウントしたり、解いたりすることはありません.
bin関数を使用して整数をバイナリ文字列に置き換えます.
replace関数で「1」と「0」を「#」と「」に置き換えることができます.
私は問題を解く前にbin関数を知らなかったので、直接2に分けて問題を解きます!
それでは今日の問題はここまでにしましょう
こんな暑い日は体に気をつけなさい.
こんにちは!
Reference
この問題について([プログラマー]秘密の地図), 我々は、より多くの情報をここで見つけました
https://velog.io/@minskim2/프로그래머스-비밀지도
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
Reference
この問題について([プログラマー]秘密の地図), 我々は、より多くの情報をここで見つけました https://velog.io/@minskim2/프로그래머스-비밀지도テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol