반응형
무식하게 풀기(완전 탐색) - 모의고사
문제 출저 - 프로그래머스 https://programmers.co.kr/learn/courses/30/lessons/42840
풀이 생각
1. 누가 많이 맞았을까를 어떻게 알까?
=> 전부 채점해봐야함. 완전탐색으로 생각하자
2. 각 학생마다 정답 패턴의 크기 (1번=5, 2번=8, 3번=10) 가 다르다.
=> 각 학생 for문 돌때마다 크기 받아서 처리
3. 정답 주기를 돌려야함
=> answers가 7개라면 1번 학생은 6번째에서 다시 0번째로 와야함
=> %로 index 만들기
=> j%stuSize
4. 최대값을 어떻게 뽑을까?
=> *max_element 으로 학생들 중 max 정답수 뽑기
=> max와 같으면 answer에 넣기 (오름차순까지 해결됨)
my code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
const vector<vector<int> > stu = {
{1,2,3,4,5}, {2,1,2,3,2,4,2,5}, {3,3,1,1,2,2,4,4,5,5}
};
vector<int> solution(vector<int> answers) {
vector<int> answer;
int count[3] = { 0, 0, 0 };
size_t size = answers.size();
for(int i = 0; i < 3; ++i){
size_t stuSize = stu[i].size();
for(size_t j = 0; j < size; ++j){
if(stu[i][j%stuSize] == answers[j]) ++count[i];
}
}
int max = *max_element(count, count+3);
for(int i=0; i<3; ++i){
if(max == count[i]) answer.push_back(i+1);
}
return answer;
}
|
cs |
반응형
'IT > Algorithm' 카테고리의 다른 글
완전 탐색 - 소수 찾기 (0) | 2020.09.03 |
---|---|
DFS - 타겟 넘버 (0) | 2020.09.01 |
무식하게 풀기(완전 탐색) - 게임판 덮기 (0) | 2020.08.30 |
무식하게 풀기(완전 탐색) - 소풍 (0) | 2020.08.30 |
무식하게 풀기 (완전 탐색) (0) | 2020.08.30 |
댓글