본문 바로가기

개발

[프로그래머스] 모의고사 (C++)

문제

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

풀이

INITIATE - 수포자1,2,3의 선택지를 쭉 더해줬다.

수포자1은 12345123451234512345....

수포자2는 21232425 21232425 21232425...

수포자3은 3311224455 3311224455 3311224455....

 

COMPARE - 그다음 정답과 하나씩 비교해주었다

CHECK MAX - 가장 높은 점수를 받은 후 결과를 출력!

#include <string>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;

vector<int> solution(vector<int> answers) 
{
    //INITIATE
    string str1 = "12345";
    string str2 = "21232425";
    string str3 = "3311224455";
    for (int i = 0; i <= 10; ++i) 
    { str1 += str1; str2 += str2; str3 += str3;}

    //COMPARE
    vector<int> scores(3,0);
    for(int i;i<answers.size();i++)
    {
        if(answers[i]==static_cast<int>(str1[i] - '0'))
        {scores[0]++;}
        if(answers[i]==static_cast<int>(str2[i] - '0'))
        {scores[1]++;}
        if(answers[i]==static_cast<int>(str3[i] - '0'))
        {scores[2]++;}
    }

    //CHECK MAX
    vector<int> answer;
    int maxScore=*max_element(scores.begin(),scores.end());  
    for(int i=0;i<3;i++)
    {
        if(scores[i]==maxScore){answer.push_back(i+1);}
    }
    
    return answer;
}

 

'개발' 카테고리의 다른 글

플로이드 와샬 알고리즘(Floyd Warshall)  (1) 2024.11.18
[프로그래머스] 피로도 (C++)  (0) 2024.11.18
다익스트라 알고리즘 (Dijkstra)  (0) 2024.11.15
포트포워딩  (0) 2023.11.28
[C언어] 동적 할당 malloc  (0) 2023.04.12