-
[프로그래머스]>완전탐색>모의고사알고리즘 2020. 6. 15. 00:19
문제링크 https://programmers.co.kr/learn/courses/30/lessons/42840
완전 탐색은 가능한 모든 경우의 수를 진행하여 결과를 찾아내는 방식입니다.
반복문을 사용한 방식과 재귀호출을 사용한 방식이 있습니다.
이 문제에선 수포자 1은 1,2,3,4,5로 규칙을, 수포자 2는 2,1,2,3,2,4,2,5로, 수포자 3은 3,3,1,1,2,2,4,4,5,5로 규칙이 정해져있습니다.
저는 이 규칙을 배열에 저장해두고, 원형 큐처럼 돌아가도록하여 주어진 모의고사 답안 배열과 비교를 해서 각 사람이 맞은 개수를 저장하였습니다.
그리고 세 사람의 맞은 개수 중 최대값을 구하고, 정렬을 하기보단 최대값과 같은 사람을 순서대로 정답에 저장하도록 하였습니다.
#include <string> #include <vector> using namespace std; vector<int> solution(vector<int> answers) { vector<int> answer; int count[3]={0,0,0}; int p1[5]={1,2,3,4,5},p2[8]={2,1,2,3,2,4,2,5},p3[10]={3,3,1,1,2,2,4,4,5,5}; for(int i=0 ; i<answers.size() ; ++i) { if(answers.at(i)==p1[i%5]) ++count[0]; if(answers.at(i)==p2[i%8]) ++count[1]; if(answers.at(i)==p3[i%10]) ++count[2]; } int m=-999; for(int i=0 ; i<3 ; ++i) { if(m<count[i]) m=count[i]; } for(int i=0 ; i<3 ; ++i) { if(m==count[i]) answer.push_back(i+1); } return answer; }
'알고리즘' 카테고리의 다른 글
[프로그래머스]>힙>더맵게 [C++] (0) 2020.06.17 [프로그래머스] > DFS/BFS > 타겟넘버 [C++] (0) 2020.05.07 [프로그래머스] > 스택/큐 > 기능개발 [C++] (0) 2019.11.12 백준 14916 거스름돈 [C++] - 동적 계획법 (0) 2019.05.28 백준 11050 이항 계수 1 [C++] - 동적 계획법 (0) 2019.05.27