[プログラマー/レベル2/ハイスコアスイート]小数(C++)(Python)を検索
[プログラマー/レベル2/ハイスコアスイート]小数(C++)(Python)を検索
で与えられた文字列(numbers)からなるすべての数値の組合せを探します. 可能なすべての組合せについて、小数であると判断し、小数である場合は個別のリストに分離します. リストから重複データを削除すると、残りの数が正しい.
どの数が小数であるかを判断する関数を定義します.(check_num)1からデジタル長(len(numbers))まで組合せ数を増やし、可能なすべての組合せを探します.
2-1. 1つの数字の組み合わせ、2つの数字の組み合わせ......len(numbers)様々な数字の組み合わせ.
2-2. 各組合せステップでは、join()関数を使用してリスト内の要素を結合し、各要素をint型に変換します.
ex)join関数を使用してリスト内の要素(tuple)を文字列に結合するプロセス
1つの数字で構成されたリスト=[("1",),("2",),("3",)]=>["1","2","3"]
2つの数字を組み合わせたリスト=[("1","2"),("2","3"),("3","1")]=>["12","23","31"]
2-3. check num関数を使用して、変換後の数字が小数であるかどうかを判断します. の小数であれば、tmpリストに追加されます. set()関数を使用しての最終tmpリストをセットに変換し、重複を除去します. 重複除外、残りの要素数回答
追加
ex)
ex)
追加
数列、組合せ関数はよく使われるので、まず使い方を熟知します.
1.質問
2.アクセス/チェックポイント
3.解決方法
どの数が小数であるかを判断する関数を定義します.(check_num)
2-1. 1つの数字の組み合わせ、2つの数字の組み合わせ......len(numbers)様々な数字の組み合わせ.
2-2. 各組合せステップでは、join()関数を使用してリスト内の要素を結合し、各要素をint型に変換します.
ex)join関数を使用してリスト内の要素(tuple)を文字列に結合するプロセス
1つの数字で構成されたリスト=[("1",),("2",),("3",)]=>["1","2","3"]
2つの数字を組み合わせたリスト=[("1","2"),("2","3"),("3","1")]=>["12","23","31"]
2-3. check num関数を使用して、変換後の数字が小数であるかどうかを判断します.
4.完全なコード
1.Pythonコード
from itertools import permutations
import math
def check_num(num):
if num < 2:
return False
else:
# 2부터 해당수의 제곱근까지 나눠서 소수인지 확인
for i in range(2, int(math.sqrt(num))+1):
if num%i == 0:
return False
return True
def solution(numbers):
answer = 0
tmp = []
# numbers를 1개 ~ len(numbers)개까지 조합
for i in range(1, len(numbers)+1):
arr = list(permutations(numbers, i))
for j in range (0, len(arr)):
# i개를 조합시켜 생성된 리스트의 각 원소를 join후 int로 형변환
num = int(''.join(arr[j]))
# num이 소수 인지 확인, 소수이면 answer[]에 추가
if check_num(num) :
tmp.append(num)
# answer리스트를 set(집합)으로 바꿔서 중복 제거 후 남은 갯수가 정답
answer = len((set(tmp)))
return answer
2.C++コード
追加
5.注意事項
👉 Pythonでシーケンスを求める方法、置換()関数
ソートは、n個の要素にr個の要素を順番にリストします。
📌 Pythonの順序関数の使い方:配列(重複可能オブジェクト、選択する項目数)
from itertools import permutations
a = ['A','B','C']
per_list = permutations(a,2) #리스트 a에서 순서 상관없이 2개 선택해서 조합
#결과 : [('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'C'), ('C', 'A'), ('C', 'B')]
👉 Pythonのjoin()、split()関数
1.split()関数:文字列を()の区切り文字から区切り、リストに戻る関数。
📌 split()関数の使い方:文字列。split(「区切り文字」)
ex)
a = "2021-06-23"
b = list(a.split('-'))
#결과 : ["2021", "06", "23"]
2.join()関数:リストを文字列に結合する関数
📌 join()関数の使い方:「区切り文字」。join(リスト)
ex)
a = ['A', 'B', 'C']
b = list(''.join(a)) #구분자가 공백인 경우
c = list('_'.join(a)) #구분자가 _ 인 경우
#결과 b = "ABC" , c = "A_B_C"
6.他の方法を試みる
追加
7.後期
数列、組合せ関数はよく使われるので、まず使い方を熟知します.
Reference
この問題について([プログラマー/レベル2/ハイスコアスイート]小数(C++)(Python)を検索), 我々は、より多くの情報をここで見つけました https://velog.io/@qhsh866/프로그래머스Level2고득점키트-소수-찾기-CPythonテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol