[C++] 2021 Dev-Matching: 웹 백엔드 개발자(상반기)로또의 최고 순위와 최저 순위

2023. 5. 19. 17:23·[게임 개발] 알고리즘 공부/프로그래머스

https://school.programmers.co.kr/learn/courses/30/lessons/77484

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

난이도 : Lv. 1

문제

로또를 구매한 민우는 당첨 번호 발표일을 학수고대하고 있었습니다.

하지만, 민우의 동생이 로또에 낙서를 하여, 일부 번호를 알아볼 수 없게 되었습니다.

당첨 번호 발표 후, 민우는 자신이 구매했던 로또로 당첨이 가능했던 최고 순위와 최저 순위를 알아보고 싶어 졌습니다.
(알아볼 수 없는 번호를 0으로 표기)

 

민우가 구매한 로또 번호를 담은 배열 lottos, 당첨 번호를 담은 배열 win_nums가 매개변수로 주어집니다.

이때, 당첨 가능한 최고 순위와 최저 순위를 차례대로 배열에 담아서 return 하도록 solution 함수를 완성해주세요.

#include <string>
#include <vector>

using namespace std;

vector<int> solution(vector<int> lottos, vector<int> win_nums) {
    vector<int> answer;
    
  
    int hitNum = 0;  // 맞춘 숫자
    int missingNum = 0;  // 알 수 없는 수
    
    int bestCase;
    int worstCase;
        
    for(int lottoNum : lottos)
    {
        if (lottoNum == 0)
            ++missingNum;      
        for(int winNum : win_nums)
        {
            if(lottoNum == winNum)
                ++hitNum;
        }
    }

    bestCase = 7 - (hitNum + missingNum);
    if(bestCase >= 6)
        bestCase = 6;
    
    worstCase = 7 - hitNum;
    if(worstCase >= 6)
        worstCase = 6;
    
    answer.push_back(bestCase);
    answer.push_back(worstCase);
    return answer;
}

 

 

풀이
  1. 맞춘 수, 0의 개수를 저장할 변수 hitNum과 missingNum을 선언한다.

  2. 최고 순위와 최저 순위를 저장할 변수 bestCase와 worstCase를 선언한다.

  3. for(int lottoNum : lottos)과 for(int winNum : win_nums) 를 이용해 이중 반복문을 선언한다.
    : for(int lottoNum : lottos) 은 lottoNum이 lottos 배열의 원소를 순회하면서 차례대로 가르킨다는 뜻이다.

  4. 반복문을 돌면서 0이 발견되면 missingNum에 1을 더하고,
    lottoNum과 winNum이 같으면 hitNum에 1을 더한다.

  5. bestCase에는 7 - (맞춘 개수 + 0의 개수)
    worstCase에는 7 - 맞춘 개수를 넣는다.
    다만 두 케이스가 6보다 작거나 같으면 6을 넣는다.
    이는 1개를 맞추거나 맞춘게 없는 경우 모두 6등이기 때문이다.

  6. answer 백터에 두 케이스를 push_back 한다.
저작자표시 (새창열림)

'[게임 개발] 알고리즘 공부 > 프로그래머스' 카테고리의 다른 글

[C++] 완주하지 못한 선수  (0) 2023.07.07
[C++] 2021 카카오 채용연계형 인턴십 - 숫자 문자열과 영단어  (0) 2023.06.24
[C++] 2018 KAKAO BLIND RECRUITMENT[1차] 비밀지도  (0) 2023.06.23
[C++] 가장 가까운 같은 글자  (0) 2023.06.22
[C++] 2023 KAKAO BLIND RECRUITMENT개인정보 수집 유효기간  (0) 2023.05.21
'[게임 개발] 알고리즘 공부/프로그래머스' 카테고리의 다른 글
  • [C++] 2021 카카오 채용연계형 인턴십 - 숫자 문자열과 영단어
  • [C++] 2018 KAKAO BLIND RECRUITMENT[1차] 비밀지도
  • [C++] 가장 가까운 같은 글자
  • [C++] 2023 KAKAO BLIND RECRUITMENT개인정보 수집 유효기간
람팜팜~
람팜팜~
:)
  • 람팜팜~
    RumPumPum
    람팜팜~
  • 전체
    오늘
    어제
    • 전체 (123)
      • 🎵 일상 (2)
      • JAVA (5)
        • 김영한의 자바 입문 (3)
      • JavaScript (12)
      • ---------------------------.. (0)
      • [게임 개발] 포트폴리오 (2)
        • RPG (1)
        • 슈터-플랫포머 (1)
      • [게임 개발] 개발 일지 (28)
        • RPG (25)
        • TopDownProject (3)
      • [게임 개발] 언리얼엔진 공부 (9)
        • 이득우의 언리얼 프로그래밍 Part.1 (6)
        • 이득우의 언리얼 프로그래밍 Part.2 (1)
        • 개인 메모 (2)
      • [게임 개발] 알고리즘 공부 (60)
        • 프로그래머스 (8)
        • 백준 (52)
        • 개인 메모 (0)
      • [게임 개발] CPP 공부 (2)
        • 이것이 C++ 이다 (1)
        • Effective C++ (0)
        • Effective Modern C++ (0)
        • 홍정모 그래픽스 새싹코스 (1)
      • [게임 개발] CS 공부 (3)
  • 블로그 메뉴

    • 링크

      • Github
    • 공지사항

    • 인기 글

    • 태그

      참조자
      문자열
      dp
      브루트포스
      누적합
      데드락
      우선순위 큐
      슬라이딩 윈도우
      해시
      투포인터
      역참조
      dfs
      메모리구조
      프로세스
      스레드
      그리디
      context switching
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    람팜팜~
    [C++] 2021 Dev-Matching: 웹 백엔드 개발자(상반기)로또의 최고 순위와 최저 순위
    상단으로

    티스토리툴바