[プログラマー][ハッシュ]電話番号リスト
2.電話番号リスト
私の髪の草
def solution(phone_book):
answer = True
phone_book.sort()
for i in range(0, len(phone_book) - 1):
if(phone_book[i] == phone_book[i+1][0:len(phone_book[i])]):
answer = False
break
return answer
基本的な解法は,受信したphone bookをソートし,隣接値間を比較し,時間的複雑度N以内で解く.解法はあまり難しくなく、考えにくい原因は以下の通りです.
def solution(phone_book):
answer = True
phone_book.sort()
for i in range(0, len(phone_book) - 1):
if(phone_book[i] == phone_book[i+1][0:len(phone_book[i])]):
answer = False
break
return answer
list.sort()
a = [1, 2, 3]
a.sort(key=lambda x: x, reverse=True)
print(a)
>>> [3, 2, 1]
list.sort()は元のリスト自体を担当する.sort内部パラメータはkeyとreverseを提供することができる.keyは、何を基準に昇順するかを決定することができ、このときx:基準を加えればよい.標準は、サンプルと一致しない(x[0],x[1])が、複数のパラメータを優先順位で与えることもできる.reverseがtrueに設定されている場合、降順で変更されます.sorted(list)
a = [1, 2, 3]
b = sorted(a, key=lambda x: x, reverse=True)
print(a)
>>> [1, 2, 3]
print(b)
>>> [3, 2, 1]
ソート(list)は元のリストに影響しません.上記の結果に示すように、元のaリストは変わらない.残りのパラメータはlistです.sort()と同じです.最適なシナリオ
def solution(phoneBook):
phoneBook = sorted(phoneBook)
for p1, p2 in zip(phoneBook, phoneBook[1:]):
if p2.startswith(p1):
return False
return True
ここではzip関数を使用します.Pythonで解くたびに便利な関数が出てくるようです.zip関数
zip関数はPythonの内蔵関数で、グループ内のデータを相互に関連付けます.zip()関数は、複数のループ可能なオブジェクトをパラメータとして受信し、各オブジェクトに含まれる要素にパターン形式で順次アクセスできる反復器(iterator)を返します.
phoneBook = ["119", "97674223", "1195524421"]
print(zip(phoneBook, phoneBook[1:]))
>>> <zip object at 0x000001E4E29B9208>
phoneBook = ["119", "97674223", "1195524421"]
for p1 ,p2 in zip(phoneBook, phoneBook[1:]):
print(p1, p2)
>>> 119 97674223
>>> 97674223 1195524421
これによりzip自体を印刷すると、ウィジェットオブジェクトが返されます.これに対し、このウィジェットで巡回パラメータを印刷すると、値が得られます.ここでは紹介していませんが、解題で文字列を紹介した後、startswith関数で接頭辞かどうかを判断します.startswith関数のパラメータはtupleまたはstring値であってもよい.Reference
この問題について([プログラマー][ハッシュ]電話番号リスト), 我々は、より多くの情報をここで見つけました https://velog.io/@sewonkim/프로그래머스해시-전화번호-목록テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol