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

2025. 1. 27. 11:09·코딩 테스트/프로그래머스

문제

문제 해석

- 입력의 갯수가 6개, 6개 이고, 각 입력의 범위는 0~45인 정수(겹치지 않아서 추가적인 지역변수로 set사용도 고려해보았으나 굳이 메모리를 더 만들 필요는 없어보였다.)

- 0인 경우 지워진 숫자이기에 최대 당첨수를 증가시키고

- 아닌 경우 중첩 반복문으로 숫자를 맞출 수 있는지 검색한다.

- 2번 문제가 예외케이스를 주는데, 모두 지워진 경우 6등 처리를 해 주어야 한다.

- 전부 다 틀린 경우에 6등이 나오기 위해 예외처리를 해 주어야 한다.

 

코드

#include <vector>
#include <algorithm>

using namespace std;

vector<int> solution(vector<int> lottos, vector<int> win_nums) {
    vector<int> answer;
    // 효율적인 순차검색을 위한 정렬 수행
    sort(lottos.begin(), lottos.end());
    sort(win_nums.begin(), win_nums.end());
    
    int ZeroHit = 0;
    int NumberHit = 0;
    
    int NumberMaxCount = lottos.size();
    for(int Index = 0; Index < NumberMaxCount; ++Index)
    {
        if(lottos[Index] == 0)
        {
            ++ZeroHit;
            continue;
        }
        
        for(int WinNumIndex = 0; WinNumIndex < NumberMaxCount; ++WinNumIndex)
        {
            if(lottos[Index] == win_nums[WinNumIndex])
            {
                ++NumberHit;
                break;
            }
        }
    }
    
    // 전부 다 틀렸을 경우 6등이 나오기 위한 예외처리
    if(ZeroHit == 0 && NumberHit == 0)
    {
        ++NumberHit;
    }
    answer.push_back(7-(ZeroHit + NumberHit));
    
    // 모두 지워진 경우 6등이 나오기 위한 예외처리
    if(NumberHit == 0 && ZeroHit == 6)
    {
        ++NumberHit;
    }
    answer.push_back(7-(NumberHit));
    
    return answer;
}

 

다른 사람의 풀이

- 한 번 방문, 테스트 케이스를 잘 활용해서 0의 개수와 일치하는 번호의 개수를 적절히 담아 풀이

- 등수를 배열에 담아 0개와 1개를 맞추는 경우를 별도의 예외처리 없이 처리하는 풀이

 

회고

- 1개를 맞추는 경우와 1개도 못 맞춘 경우를 예외처리로 처리했는데 등수를 배열에 담는 방식을 사용했어도 좋았다 생각이 되었다.

'코딩 테스트 > 프로그래머스' 카테고리의 다른 글

숫자 짝궁  (2) 2025.02.03
옹알이 (2)  (1) 2025.01.31
기사단원의 무기  (1) 2025.01.24
덧칠하기  (1) 2025.01.23
소수 만들기  (1) 2025.01.22
'코딩 테스트/프로그래머스' 카테고리의 다른 글
  • 숫자 짝궁
  • 옹알이 (2)
  • 기사단원의 무기
  • 덧칠하기
DevJoo1120
DevJoo1120
  • DevJoo1120
    Jin's Programming
    DevJoo1120
  • 전체
    오늘
    어제
    • 분류 전체보기 (142)
      • 포트폴리오 (7)
        • Castlevania: Aria of Sorrow.. (7)
        • [UE5] KILL Everything (0)
      • C++ (0)
      • 라이브러리 (1)
      • 다이렉트X11 (0)
      • Unreal Engine (11)
        • Unreal Document (1)
        • 이것 저것 (8)
        • UI (1)
      • 자료구조 및 알고리즘 (0)
      • 책 정리 (3)
        • 코딩 테스트 합격자 되기 C++ 편 (10)
      • 코딩 테스트 (32)
        • 프로그래머스 (32)
      • 스파르타 코딩 언리얼 1기 (9)
        • 특강 (0)
        • C++와 Unreal Engine으로 3D .. (2)
      • TIL(Today I Learned) (63)
      • 영어 공부 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    스파르타 코딩 클럽
    이중 반복문
    책 정리
    코딩 테스트 합격자 되기 c++ 편
    문자열
    배열
    Til
    정리
    WINAPI
    정렬
    C++
    Unreal Engine 5
    과제
    map
    Study
    코딩 테스트
    팀 프로젝트
    프로그래머스
    반복문
    코딩테스트
  • hELLO· Designed By정상우.v4.10.5
DevJoo1120
로또의 최고 순위와 최저 순위
상단으로

티스토리툴바