楽透の最高と最低ランキング



👟 ステージ


プログラマステップ1(完了)

💻 言語の使用


C

📄質問内容


敏宇が購入した宝くじの番号.
パラメータは、当選番号を含む配列win numsです.
このとき、当選可能な「最高順位」と「最低順位」を順番に並べます.
戻るためにresolution関数を完了してください.

問題条件


1)lottosは整数配列で,長さは6である.
2)lottosのすべての要素は0または45以下の整数である.
3)0は認識できない数字を表す.
4)0以外の数字はlottosで2つを超えない.
5)lottosの要素が整列していない可能性があります.
6)win numsは長さ6の整数配列である.
7)win numsのすべての要素は1または45未満の整数である.
8)win numsには2つ以上の同じ数字は含まれていません.
9)win numsの要素が整列していない可能性があります.
I/O例)
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]

コードの作成

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

// lottos_len은 배열 lottos의 길이입니다.
// win_nums_len은 배열 win_nums의 길이입니다.
int* solution(int lottos[], size_t lottos_len, int win_nums[], size_t win_nums_len) {
    // return 값은 malloc 등 동적 할당을 사용해주세요. 할당 길이는 상황에 맞게 변경해주세요.
    
int count1 = 0;
int count2 = 0;
    
    
  for(int i = 0; i < lottos_len; i++){
        
     if(lottos[i] == 0) count1 ++;
           
        for(int j = 0; j < lottos_len; j++){
        
            if(lottos[i] == win_nums[j]) {
                count1 ++;
                count2 ++;
      }
   }
}   
  if(count1 == 0) count1 = 1;
  if(count2 == 0) count2 = 1;
    
  int* answer = (int*)malloc(1);
        
  answer[0] = 7 - count1;
  answer[1] = 7 - count2;
    
    return answer;
}

🔔解決方法と私の方法


👉<チェック条件>


条件として、楽透数字には読めない数字だけが「0」と表記されているそうです.
「順番に関係なく番号が一致していれば」というのであれば正解を認めます
0に入る数字をよく考えれば、解けやすい.

🔑<メソッドとプール>


順位がどうであれ、最高順位と最低順位を求めれば良いので、2つのケースに考えれば良いと思います.
<ランキングが一番高い場合>
任意の数字0はwin numsに含まれます.
<最下位レベル>
任意の数字0はwin numsから除外されます.
今残っているものは簡単です.宝くじ番号が正しい場合、ランキングは個数に依存するため、countという変数を設定して個数を計算します.ただし、2つのケースの数があるため、「count 1」と「2」に設定します.
2つのfor文を用いてlottos配列とwin nums配列を1つずつチェックする.この2つの値が同じである場合、count 1,2は+1に設定されます.
あ、?では、上にcountを追加した理由は何ですか?
最高順位は,楽透を判定する変数0値がwin numsに含まれているためcount 1に+1を加える.
楽透の順位は全部で1位~6位なので、「7-count 1,2」なら最終順位が出ます.
それらの値をanwerに置くと終わります.
🚫一つの注意事項🚫
lottsの配列とwin numsの配列が少しも一致しない場合、count値は1つずつ割り当てて6位になります!

👨🏻‍💻 鼻輪を解く感覚


思ったより解決しやすく、最後の注意事項のようです.
少しも合わない時の状況を考えてみましょう.
歌い間違えなかったので残念