프로그래머스 level1 문제인 모의고사 문제를 풀어보았습니다.
프로그래머스 연습 문제 - 모의고사
https://school.programmers.co.kr/learn/courses/30/lessons/42840
문제 설명
수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다.
1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5,...
2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5,...
3번 수포자가 찍는 방식: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5,...
1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers가 주어졌을 때, 가장 많은 문제를 맞힌 사람이 누구인지 배열에 담아 return 하도록 solution 함수를 작성해 주세요.
제약 사항
- 시험은 최대 10,000 문제로 구성되어 있습니다.
- 문제의 정답은 1, 2, 3, 4, 5중 하나입니다.
- 가장 높은 점수를 받은 사람이 여럿일 경우, return 하는 값을 오름차순 정렬해 주세요.
코드
규칙을 가진 배열을 만들고 입력 값과 규칙을 비교하는 문제입니다.
규칙이 3개가 있고 vector의 사이즈가 규칙마다 다른데, 비교할 때 % vector.size()를 통해 비교하면 되는 문제입니다.
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int check(vector<int> a, vector<int> num) {
int cnt = 0;
for (int i = 0; i < a.size(); i++) {
if (a[i] == num[i%num.size()]) {
cnt++;
}
}
return cnt;
}
vector<int> solution(vector<int> answers) {
vector<int> answer;
vector<int> num1, num2, num3;
for(int i=1; i<=5; i++)
num1.push_back(i); //5
num2.push_back(2); num2.push_back(1); num2.push_back(2); num2.push_back(3); num2.push_back(2); num2.push_back(4); num2.push_back(2); num2.push_back(5); //8
num3.push_back(3);num3.push_back(3);num3.push_back(1);num3.push_back(1);num3.push_back(2);num3.push_back(2);num3.push_back(4);num3.push_back(4);num3.push_back(5);num3.push_back(5); //10
int res[3];
res[0] = check(answers, num1);
res[1] = check(answers, num2);
res[2] = check(answers, num3);
int max_score = max(max(res[0], res[1]), res[2]);
for (int i = 0; i < 3; i++) {
if (res[i] == max_score)
answer.push_back(i + 1);
}
return answer;
}
결론
vector를 활용하고 입력값과 출력값을 다루는 간단한 문제였습니다.
반응형
'개발 > 자료구조, 알고리즘' 카테고리의 다른 글
[코딩 테스트] 프로그래머스 연습 문제 - 기능개발 (0) | 2023.05.31 |
---|---|
[코딩 테스트] 프로그래머스 연습 문제 - 더 맵게 (0) | 2023.05.30 |
[코딩 테스트] 프로그래머스 연습 문제 - 타겟 넘버 (0) | 2023.05.25 |
[코딩 테스트] 프로그래머스 연습 문제 - 멀쩡한 사각형 (0) | 2023.05.24 |
[코딩 테스트] 프로그래머스 연습 문제 - 키패드 누르기 (0) | 2023.05.23 |