Programmers_로또의 최고순위와 최저순위

한상현·2021년 7월 14일
0

Algorithm

목록 보기
30/33

😭 열심히 알고리즘을 공부한 성과가 났다.
학과 알고리즘 대회에서 🥇1등!
호남권 알고리즘 대회에서 🥈2등!!
더 열심히하자 ㅎㅎ

  • 정말 쉽다
  • 고민할 필요도 없다
  • 0은 어떤 수든 나올 수 있으므로 최고순위를 정할 때는 맞은 개수에 더해주고 최저순위를 정할 때는 더해주지 않으면 된다.
  • 필자는 나의 로또 번호와 실제 로또 번호를 비교하기보다는 check함수를 사용해서 2n으로 끝내줬다. (물론 n이 6이라서 큰 의미는 없다)
  • 해설할 필요도 없지만 휴가를 다녀와서 풀어보는 첫 문제인만큼 적자.
💻전체 코드
#include <string>
#include <vector>

using namespace std;

bool check[46];

int ranking(int correct)
{
    switch (correct)
    {
    case 6:
        return 1;
    case 5:
        return 2;
    case 4:
        return 3;
    case 3:
        return 4;
    case 2:
        return 5;
    default:
        return 6;
    }
}

vector<int> solution(vector<int> lottos, vector<int> win_nums)
{
    vector<int> answer;
    int correct = 0;
    int zero = 0;

    for (int i = 0; i < win_nums.size(); i++)
        check[win_nums[i]] = true;

    for (int i = 0; i < lottos.size(); i++)
    {
        if (check[lottos[i]])
            correct++;
        else if (lottos[i] == 0)
            zero++;
    }

    answer.push_back(ranking(correct + zero));
    answer.push_back(ranking(correct));

    return answer;
}
profile
의 공부 노트.

0개의 댓글