[プログラマー]楽透の最高と最低ランキング
[1]問題の説明
質問内容は以下の通りです.
宝くじ番号「0」がこの問題の核心だ.
「0」が購入した宝くじの番号と一致すると、宝くじの最高順位になります.
そうでないと最下位になります
[2]解答
1.0を存在しない配列と存在する配列に分割
ゼロとnonゼロの配列として宣言し、購入したロット番号を繰り返します.
各要素が0の場合、0配列に0またはnon zeroを入れます.
map繰返し文ではif文で0と0以外の数字を区別します.
push()メソッドを使用して、配列の最後に要素を追加します.
lottos.map((el,idx)=>{
if(el == 0){
zero.push(0);
} else {
non_zero.push(el);
}
})
2.購入した宝くじ番号と比較
私が購入した宝くじ番号をnon zeroの配列値と一つ一つ比較し、一致する数字の個数を算出して解答[1]に入れ、解答[0]に0配列に長さ値+response[1]の個数を加算する.
答え[0]はマッチングした楽透が最も高い場合に数であり、答え[1]はマッチングした楽透が最も低い場合に数である.
win_nums.map((el,idx)=>{
for(var i = 0; i < non_zero.length; i++){
if(el == non_zero[i]){
answer[1]++;
}
}
answer[0] = answer[1] + zero.length
})
3.楽透マッチングカウントによりランキング値を入れる
答え配列では、条件文を使用して個数に一致するランキング値に数値を再配置します.
answer.map((el,idx)=>{
if(el == 6){
answer[idx] = 1
}
else if(el == 5){
answer[idx] = 2
}
else if(el == 4){
answer[idx] = 3
}
else if(el == 3){
answer[idx] = 4
}
else if(el == 2){
answer[idx] = 5
}
else{
answer[idx] = 6
}
})
[3]完全なコードと実行結果
function solution(lottos, win_nums) {
var answer = [0,0];
var zero = [];
var non_zero = [];
lottos.map((el,idx)=>{
if(el == 0){
zero.push(0);
} else {
non_zero.push(el);
}
})
win_nums.map((el,idx)=>{
for(var i = 0; i < non_zero.length; i++){
if(el == non_zero[i]){
answer[1]++;
}
}
answer[0] = answer[1] + zero.length
})
answer.map((el,idx)=>{
if(el == 6){
answer[idx] = 1
}
else if(el == 5){
answer[idx] = 2
}
else if(el == 4){
answer[idx] = 3
}
else if(el == 3){
answer[idx] = 4
}
else if(el == 2){
answer[idx] = 5
}
else{
answer[idx] = 6
}
})
return answer;
}
[4]フィードバック
問題を解決した後、他の人の解答を見て、フィルタとinclude法で問題を簡潔に解決するコードを見ました.
後で問題を解く時、できるだけes 6文法を運用して、問題を簡単に簡潔にします.(しかし、時間が経つにつれて精度は向上していく)
Reference
この問題について([プログラマー]楽透の最高と最低ランキング), 我々は、より多くの情報をここで見つけました https://velog.io/@josunghoon53/프로그래머스-로또의-최고-순위와-최저-순위テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol