제한사항

  • lottos는 길이 6인 정수 배열입니다.
  • lottos의 모든 원소는 0 이상 45 이하인 정수입니다.
    • 0은 알아볼 수 없는 숫자를 의미합니다.
    • 0을 제외한 다른 숫자들은 lottos에 2개 이상 담겨있지 않습니다.
    • lottos의 원소들은 정렬되어 있지 않을 수도 있습니다.
  • win_nums은 길이 6인 정수 배열입니다.
  • win_nums의 모든 원소는 1 이상 45 이하인 정수입니다.
    • win_nums에는 같은 숫자가 2개 이상 담겨있지 않습니다.
    • win_nums의 원소들은 정렬되어 있지 않을 수도 있습니다.

풀이방법 1

1. 0의 개수와 번호가 일치하는 개수를 센다.

2. 최고 순위는 0이 모두 정답인 경우이므로 countAnswer + countZero이다.

3. countAnswer + countZero가 1이하라면 낙첨이므로 6을 push_back하고 2이상이라면 7 - countAnswer + countZero를 push_back 한다.

4. 최저 순위는 0이 모두 정답이 아닌 경우이므로 countAnswer이다.

5. 마찬가지로 countAnswer로 위의 3번을 수행한다.

6. answer 리턴

#include <string>
#include <vector>

using namespace std;

vector<int> solution(vector<int> lottos, vector<int> win_nums) {
    vector<int> answer;
    int countZero = 0;
    int countAnswer = 0;
    
    for(int i = 0; i < 6; i++){
        if (lottos[i] == 0) {
            countZero++;
        } else {
            for(int j = 0; j < 6; j++)
            if(lottos[i] == win_nums[j])
                countAnswer++;
        }
    }
    
    if(countAnswer + countZero < 2)
        answer.push_back(6);
    else
        answer.push_back(7 - (countAnswer + countZero));
    
    if(countAnswer< 2)
        answer.push_back(6);
    else
        answer.push_back(7 - countAnswer);
    
    return answer;
}

 

풀이방법 2

1. 0의 개수와 번호가 일치하는 개수를 센다.

2. 최고 순위는 0이 모두 정답인 경우이므로 countAnswer + countZero이고 최저 순위는 0이 모두 정답이 아닌 경우이므로 countAnswer이다.

3. map 자료구조를 이용해 각 값에 따른 순위를 매칭시켜준다.

4. answer 리턴

 

#include <string>
#include <vector>
#include <map>

using namespace std;

vector<int> solution(vector<int> lottos, vector<int> win_nums) {
    vector<int> answer;
    int countZero = 0;
    int countAnswer = 0;
    
    for(int i = 0; i < 6; i++){
        if (lottos[i] == 0) {
            countZero++;
        } else {
            for(int j = 0; j < 6; j++)
            if(lottos[i] == win_nums[j])
                countAnswer++;
        }
    }
    
    map<int,int> result_match;
    result_match[0] = 6;
    result_match[1] = 6;
    result_match[2] = 5;
    result_match[3] = 4;
    result_match[4] = 3;
    result_match[5] = 2;
    result_match[6] = 1;
    
    answer.push_back(result_match[countAnswer + countZero]);
    answer.push_back(result_match[countAnswer]);
    
    return answer;
}

'프로그래머스 > 1레벨' 카테고리의 다른 글

햄버거 만들기/C++  (0) 2022.12.30
[1차] 다트게임/C++  (0) 2022.12.30
[1차] 비밀지도/C++  (0) 2022.12.29
과일 장수/C++  (0) 2022.12.29
내적  (0) 2022.12.29

+ Recent posts