- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- C++
- til
- 비주얼 베이직
- 알고리즘
- oauth
- 연결리스트
- 백준
- 자바
- Java
- 동적할당
- python
- 자료구조
- firebase google
- 안드로이드 스튜디오
- 안드로이드
- 정렬
- 공유대학
- 로그인
- 구글 로그인
- Firebase
- 프로그래머스
- 파이썬
- 배열
- sql
- C언어
- 프로그래밍 입문
- 코딩테스트
- 컴퓨터공학과
- android studio
Archives
코딩하는 해달이
[level 1] 모의 고사 본문
문제 설명
수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 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하는 값을 오름차순 정렬해주세요.
문제 이해
1,2,3번이 찍는 방식의 패턴을 잘 보고 답과 비교해서 총 점수를 구해보자.
알고리즘
1. 정수 배열 answers를 입력받는다.
2. 1,2,3번 수포자가 찍는 패턴을 배열로 저장한다.
3. 1,2,3번 수포자가 찍는 패턴과 answers의 정답을 비교해서 각 점수를 구한다.
4. 각 점수를 비교해서 가장 높은 사람을 answer에 추가한다.
풀이코드
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(vector<int> answers) {
vector<int> people;
vector<int> n1;
vector<int> n2;
vector<int> n3;
int n2pn = 0;
int n2pat[4] = { 1,3,4,5 };
int n3pn = 0;
int n3pat[10] = { 3,3,1,1,2,2,4,4,5,5 };
int score[3] = { 0, };
for (int i = 0; i <= answers.size(); i++) {
n1.push_back(i % 5 + 1);
if (i % 2 == 0) {
n2.push_back(2);
}
else {
n2.push_back(n2pat[n2pn % 4]);
n2pn++;
}
n3.push_back(n3pat[n3pn%10]);
n3pn++;
}
for (int i = 0; i < answers.size(); i++) {
if (n1[i] == answers[i]) {
score[0]++;
}
if (n2[i] == answers[i]) {
score[1]++;
}
if (n3[i] == answers[i]) {
score[2]++;
}
}
int max = *max_element(score, score + 3);
for (int i = 0; i < 3; i++) {
if (score[i] == max) {
people.push_back(i + 1);
}
}
return people;
}
https://school.programmers.co.kr/learn/courses/30/lessons/42840
반응형
'개인 공부 > 프로그래머스' 카테고리의 다른 글
[level 1] 완주하지 못한 선수 (0) | 2022.08.05 |
---|---|
[level 1] K번째 수 (0) | 2022.08.04 |
[level 1] 체육복 (0) | 2022.08.02 |
[level 1] 실패율 (0) | 2022.08.02 |
[level 1] 약수의 개수와 덧셈 (0) | 2022.07.31 |
Comments