[プログラマー]Lv 1楽透の最高と最低ランキング
質問リンク
https://programmers.co.kr/learn/courses/30/lessons/77484
input & output
lottoswin_numsresult[44, 1, 0, 0, 31, 25][31, 10, 45, 1, 6, 19][3, 5][0, 0, 0, 0, 0, 0][38, 19, 20, 40, 15, 25][1, 6][45, 4, 35, 20, 3, 9][20, 9, 3, 45, 4, 35][1, 1]
Approach #1
O(N^2)
サイズ6のlottos配列とwin nums配列を2つのfor文に変換するため,時間複雑度は以下のようになる.
Space Complexity
O(1)
答え配列の大きさは2(高Rank,低Rank)に固定されているため,空間複雑度はO(1)である.
Review題を理解し、擬似コードを記述し、最終コードを記述するのに約20分かかります.問題は簡単だから大丈夫! 回の運賃は最初は逆だったのですが、なぜ負けるのか分かりませんが、元々は高Rankと低Rankが逆になっているからです.こんな間違いを犯すなんて、、、 初めてRankを計算した時に6個当てたら1 5個なら2...このように無知に論理を編んで、解く時考えて、もし7の中で正しい個数を取り除くならば、rankが現れて、急いで修正して、、、ははは.时には无知が答えだけど...今日は違います. TIL
新しく書かれた関数はありません.他の解答を参考にしてから書いてください.時間の複雑さを減らす過程で、新しい解答や概念が適用されたのかもしれません. Approach #2
Space Complexity
https://programmers.co.kr/learn/courses/30/lessons/77484
input & output
lottoswin_numsresult[44, 1, 0, 0, 31, 25][31, 10, 45, 1, 6, 19][3, 5][0, 0, 0, 0, 0, 0][38, 19, 20, 40, 15, 25][1, 6][45, 4, 35, 20, 3, 9][20, 9, 3, 45, 4, 35][1, 1]
Approach #1
알아볼수 없는 번호 : 0
구매한 로또 번호 : 44, 1, 0, 0, 31 25
당첨 로또 번호 : 31, 10, 45, 1, 6, 19
1,31 2개 일치.
알아볼수 없는 2개의 번호(0,0)를 각각 10,6이라고 가정하면 3등(4개 일치)까지 당첨 가능.
11,7이라고 가정하면 5등(2개 일치)까지 당첨 가능
return [3,5]
[45, 4, 35, 20, 3, 9]
[20, 9, 3, 45, 4, 35]
-> 45,4,35,20,3,9 다 일치 (1등)
for문:
lottos[i]와 win_nums[j]를 비교. 같으면 sameCnt++;
lottos[i]===0 이면 zeroCnt++;
function calRank(sameCnt)
rank = 7-sameCnt
if(rank<5) return rank
else return 6
if(zeroCnt===0)이면 rank = calRank(sameCnt)
return [rank, rank];
else 이면
minRank=calRank(sameCnt);
maxRank=calRank(sameCnt+zeroCnt);
return [minRank, maxRank]
Solution #1function solution(lottos, win_nums) {
var answer = [];
let zeroCnt = 0, sameCnt = 0;
for(let i=0; i<lottos.length; i++){
let curNum = lottos[i];
if(curNum===0){
zeroCnt++;
continue;
}
for(let j=0; j<win_nums.length; j++){
if(curNum === win_nums[j]) sameCnt++;
}
}
if(zeroCnt === 0){
let rank = calRank(sameCnt);
answer = [rank, rank];
}
else {
let lowRank = calRank(sameCnt);
let highRank = calRank(sameCnt+zeroCnt);
answer = [highRank, lowRank];
}
return answer;
}
function calRank(sameCnt){
let rank = 7 - sameCnt;
return rank < 6 ? rank : 6;
}
N: lottos.length, win_nums.lenght(문제에서는 6)
Time ComplexityO(N^2)
サイズ6のlottos配列とwin nums配列を2つのfor文に変換するため,時間複雑度は以下のようになる.
Space Complexity
O(1)
答え配列の大きさは2(高Rank,低Rank)に固定されているため,空間複雑度はO(1)である.
Review
新しく書かれた関数
Solution #2
Time ComplexitySpace Complexity
Reference
この問題について([プログラマー]Lv 1楽透の最高と最低ランキング), 我々は、より多くの情報をここで見つけました https://velog.io/@jisubin12/프로그래머스-Lv1.-로또의-최고-순위와-최저-순위テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol