テストコード(プログラマー第1段階(25号:ポンケンモン)
2152 ワード
問題の説明
長い旅行を経て、あなたはやっと洪博士の研究室に着いた.洪博士はあなたに教えて、あなたは自分の実験室の全部のN匹の携帯電話の殻の中からN/2匹を持っていくことができます.
ホン博士研究室のボンケンモンは種類番号で区別されている.そのため、同じタイプの携帯電話のガードプロセスには同じ番号があります.例えば、研究室に4つの携帯電話のケースがある場合、各携帯電話のケースの種類番号は[3号、1号、2号、3号]で、3号携帯電話のケースが2つ、1号携帯電話のケースが2つ、2号携帯電話のケースが2つあることを示しています.このとき、4つのケースの中から2つを選ぶ方法は、以下の6つがあります.
1回目(3回目)、2回目(1回目)携帯電話のデーモンを選択
1回目(3回目)、3回目(2回目)の携帯電話のデーモンを選択
1回目(3回目)、4回目(3回目)携帯電話のデーモンを選択
2つ目(1つ)、3つ目(2つ)の携帯電話のデーモンを選択
2つ目(1つ)、4つ目(3つ)の携帯電話のデーモンを選択
3つ目(2つ目)、4つ目(3つ目)の携帯電話のデーモンを選択
この場合、1番目(3番)のphonecketmonと4番目(3番)のphonecketmonを選択する方法は1つ(3番のphonecketmonの2つ)のphonecketmonしかありませんが、他の方法は2つのphonecketmonがあります.したがって、上記の例では、携帯電話のケースタイプ数の最大値は2です.
可能な限り多くの携帯電話の保護プロセスを望んでいるので、できるだけ多くの携帯電話の保護プロセスを含むN/2を選択したいと思っています.n個の携帯電話ガードプロセスタイプ番号を含む配列numsをパラメータとして指定すると、N/2個の携帯電話ガードプロセスを選択する方法のうち、最も多くのタイプの携帯電話ガードプロセスを選択する方法を見つけ、解法関数を完了し、当時の携帯電話ガードプロセスタイプ番号の個数を返す.
せいげんじょうけん
numsは、携帯電話のデーモンプロセスのタイプ番号を含む1次元配列です.
numsの長さ(N)は10000より大きい自然数であり、常に偶数である.
「携帯電話のデーモンプロセス」のタイプ番号は1または2万以上の自然数です.
最も多くの携帯電話のデーモンを選択できる方法はいくつかありますが、最も多く選択できる携帯電話のデーモンのタイプ数の最値を返すだけでいいです.
I/O例
nums result
[3,1,2,3] 2
[3,3,3,2,2,4] 3
[3,3,3,2,2,2] 2
I/O例説明
I/O例#1
問題の例.
I/O例#2
ケースが6つあるのでケースを3つ選びます
最も多くの種類の携帯電話のケースを選ぶために、3番の携帯電話のケース、2番の携帯電話のケース、4番の携帯電話のケースを選んで、それから3に戻ることができます.
I/O例#3
ケースが6つあるのでケースを3つ選びます
最も種類の多い携帯電話のケースを選ぶためには、3番の携帯電話のケースと2番の携帯電話のケースを選ぶか、3番の携帯電話のケースと2番の携帯電話のケースを選ぶことができます.そのため、最大選択可能なケースのタイプ数は2です.
私の答えは:#テスト3の値は2ではなく3です.
感じ:
長い旅行を経て、あなたはやっと洪博士の研究室に着いた.洪博士はあなたに教えて、あなたは自分の実験室の全部のN匹の携帯電話の殻の中からN/2匹を持っていくことができます.
ホン博士研究室のボンケンモンは種類番号で区別されている.そのため、同じタイプの携帯電話のガードプロセスには同じ番号があります.例えば、研究室に4つの携帯電話のケースがある場合、各携帯電話のケースの種類番号は[3号、1号、2号、3号]で、3号携帯電話のケースが2つ、1号携帯電話のケースが2つ、2号携帯電話のケースが2つあることを示しています.このとき、4つのケースの中から2つを選ぶ方法は、以下の6つがあります.
1回目(3回目)、2回目(1回目)携帯電話のデーモンを選択
1回目(3回目)、3回目(2回目)の携帯電話のデーモンを選択
1回目(3回目)、4回目(3回目)携帯電話のデーモンを選択
2つ目(1つ)、3つ目(2つ)の携帯電話のデーモンを選択
2つ目(1つ)、4つ目(3つ)の携帯電話のデーモンを選択
3つ目(2つ目)、4つ目(3つ目)の携帯電話のデーモンを選択
この場合、1番目(3番)のphonecketmonと4番目(3番)のphonecketmonを選択する方法は1つ(3番のphonecketmonの2つ)のphonecketmonしかありませんが、他の方法は2つのphonecketmonがあります.したがって、上記の例では、携帯電話のケースタイプ数の最大値は2です.
可能な限り多くの携帯電話の保護プロセスを望んでいるので、できるだけ多くの携帯電話の保護プロセスを含むN/2を選択したいと思っています.n個の携帯電話ガードプロセスタイプ番号を含む配列numsをパラメータとして指定すると、N/2個の携帯電話ガードプロセスを選択する方法のうち、最も多くのタイプの携帯電話ガードプロセスを選択する方法を見つけ、解法関数を完了し、当時の携帯電話ガードプロセスタイプ番号の個数を返す.
せいげんじょうけん
numsは、携帯電話のデーモンプロセスのタイプ番号を含む1次元配列です.
numsの長さ(N)は10000より大きい自然数であり、常に偶数である.
「携帯電話のデーモンプロセス」のタイプ番号は1または2万以上の自然数です.
最も多くの携帯電話のデーモンを選択できる方法はいくつかありますが、最も多く選択できる携帯電話のデーモンのタイプ数の最値を返すだけでいいです.
I/O例
nums result
[3,1,2,3] 2
[3,3,3,2,2,4] 3
[3,3,3,2,2,2] 2
I/O例説明
I/O例#1
問題の例.
I/O例#2
ケースが6つあるのでケースを3つ選びます
最も多くの種類の携帯電話のケースを選ぶために、3番の携帯電話のケース、2番の携帯電話のケース、4番の携帯電話のケースを選んで、それから3に戻ることができます.
I/O例#3
ケースが6つあるのでケースを3つ選びます
最も種類の多い携帯電話のケースを選ぶためには、3番の携帯電話のケースと2番の携帯電話のケースを選ぶか、3番の携帯電話のケースと2番の携帯電話のケースを選ぶことができます.そのため、最大選択可能なケースのタイプ数は2です.
私の答えは:#テスト3の値は2ではなく3です.
def solution(nums):
answer = 0
answer = list(set(nums))
if len(nums) < len(nums)/2:
answer = len(nums)
elif len(nums) > len(nums)/2:
answer = len(nums)/2
elif len(nums) == len(nums)/2:
answer = len(nums)
return int(answer)
其他回答:def solution(nums):
answer = 0
n=len(nums)//2 # 고를수 있는 갯수
find=list(set(nums)) # 고를수 있는 종류
if ( n < len(find)): # 중복되지 않는 값이 더 크면 answer 는 n으로
answer = n
else:
answer = len(find) # 이외는 경우에는 answer 는 len(find)
return answer
TAKEAWAY : 感じ:
Reference
この問題について(テストコード(プログラマー第1段階(25号:ポンケンモン)), 我々は、より多くの情報をここで見つけました https://velog.io/@oojjww1/코딩테스트프로그래머스-1단계25번-폰켓몬テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol