모의고사

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

문제

문제 해석

1. 입력은 10,000이므로 O(N)으로 풀어도 문제없음.

2. 1번~3번까지의 수포자가 푸는 방식은 고정

3. 맞추는 걸 기록해서 마지막에 비교해서 answer에 집어넣으면 된다.

 

코드

#include <string>
#include <vector>

using namespace std;

vector<int> solution(vector<int> answers) {
    vector<int> answer;
    // 1번 수포자
    vector<int> Human1st = {1, 2, 3, 4, 5};
    vector<int> Human2nd = {2, 1, 2, 3, 2, 4, 2, 5};
    vector<int> Human3rd = {3, 3, 1, 1, 2, 2, 4, 4, 5, 5};
    
    int Count1 = 0, Count2 = 0, Count3 = 0;
    size_t QuestionMax = answers.size();
    int Human1Size = Human1st.size();
    int Human2Size = Human2nd.size();
    int Human3Size = Human3rd.size();
    int QuestionAnswer = 0;
    for(size_t IDX = 0; IDX < QuestionMax; ++IDX)
    {
        QuestionAnswer = answers[IDX];
        if(QuestionAnswer == Human1st[IDX % Human1Size]) ++Count1;
        if(QuestionAnswer == Human2nd[IDX % Human2Size]) ++Count2;
        if(QuestionAnswer == Human3rd[IDX % Human3Size]) ++Count3;        
    }
    
    if(Count1 == Count2 && Count2 == Count3)
    {
        answer.push_back(1);
        answer.push_back(2);
        answer.push_back(3);        
    }
    else if(Count1 == Count2 && Count1 > Count3)
    {
        answer.push_back(1);
        answer.push_back(2);
    }
    else if(Count2 == Count3 && Count2 > Count1)
    {
        answer.push_back(2);
        answer.push_back(3);
    }
    else if(Count1 == Count3 && Count1 > Count2)
    {
        answer.push_back(1);
        answer.push_back(3);
    }    
    else if(Count1 > Count2 && Count1 > Count3)
    {
        answer.push_back(1);
    }
    else if(Count2 > Count1 && Count2 > Count3)
    {
        answer.push_back(2);
    }
    else if(Count3 > Count2 && Count3 > Count1)
    {
        answer.push_back(3);
    }
    
    return answer;
}

 

회고

그냥 벡터 하나 더 쓸 걸 그랬다. 그랬으면 마지막에 if문 쇼를 안해도 될 거를...

max_element를 썼어야 했는데

 

다른 사람의 풀이

1. max_element를 활용하여 가장 많이 맞춘 경우를 구하고 앞에서부터 맞춘 개수를 담아둔 배열을 순회하여 answer에 push_back()

2. 비슷하지만 if문을 >=처리하여 개수를 줄인 풀이

 

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

덧칠하기  (1) 2025.01.23
소수 만들기  (1) 2025.01.22
과일장수  (0) 2025.01.20
카드 뭉치  (0) 2025.01.20
명예의 전당 (1)  (2) 2025.01.16
'코딩 테스트/프로그래머스' 카테고리의 다른 글
  • 덧칠하기
  • 소수 만들기
  • 과일장수
  • 카드 뭉치
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)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

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

티스토리툴바