def solution(answers):
answer = []; score=[0,0,0]
spj=[[1, 2, 3, 4, 5], [2, 1, 2, 3, 2, 4, 2, 5], [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]]
for i in range(len(answers)):
if len(answers) > len(spj[0]): spj[0].append(spj[0][i])
if len(answers) > len(spj[1]): spj[1].append(spj[1][i])
if len(answers) > len(spj[2]): spj[2].append(spj[2][i])
for i in range(3):
score[i]=len([m for m, n in zip(answers, spj[i]) if m == n])
for i in range(3):
if score[i] == max(score): answer.append(i+1)
return answer
1. spj 배열에 수포자 1, 2, 3이 찍는 숫자 패턴을 담는다.
2. 첫 번째 반복문: 배열 answers와 길이를 맞추기 위해 패턴에 맞춰 answers 길이까지 각 배열에 값을 추가한다. zip 함수는 동일한 길이의 자료형을 대상으로 묶어주기 때문에 길이를 맞춰줬다.
3. 두 번째 반복문: score 배열은 각 수포자 1,2,3의 점수에 대한 배열이다. answers에서의 m과 spj[i]의 n을 비교해서 같으면 그 값을 가져온다. 해당 배열의 전체 길이로 해당 수포자가 맞은 문제 수, 즉 점수를 구하고 score[i]에 넣는다.
아래의 연산에 사용되는 an, d는 위와 같다.
zip을 사용할 경우, 각 an, d[0]의 동일한 인덱스 위치의 값을 묶어준다. list로 확인하면 위와 같다.
for m, n in zip(an, d[i])에서 m,n은 (1,1)에서 각각 1과 1에 해당한다. 따라서 이 방법으로 m과 n이 같은지 비교하고 같으면 해당 값을 배열을 넣도록 해서 맞는 문제의 수를 구한다.
4. 세 번째 반복문: score에서 max가 두 개 이상일 경우를 위한 반복문으로, max(score)와 같으면 해당 인덱스+1을 answer에 넣는다. score가 차례로 수포자 1,2,3에 해당되므로 차례대로 넣게 된다.
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(vector<int> answers) {
vector<int> answer;
vector<int> score = {0,0,0};
vector<vector<int>> num
{
{1, 2, 3, 4, 5},
{2, 1, 2, 3, 2, 4, 2, 5},
{3, 3, 1, 1, 2, 2, 4, 4, 5, 5}
};
for(int i = 0; i < answers.size(); i++){
if(answers[i] == num[0].at(i % num[0].size())) score[0]++;
if(answers[i] == num[1].at(i % num[1].size())) score[1]++;
if(answers[i] == num[2].at(i % num[2].size())) score[2]++;
}
for(int i=0; i< score.size(); i++){
if(score[i] == *max_element(score.begin(), score.end()))
answer.push_back(i+1);
}
return answer;
}
[HackerRank] 2D Array - DS (Python) (0) | 2021.01.12 |
---|---|
[HackerRank] Staircase (Python, C++) (0) | 2021.01.11 |
[프로그래머스] K번째수 (정렬) (Python, C++) (0) | 2021.01.08 |
[프로그래머스] 완주하지 못한 선수 (해시) (Python, C++) (0) | 2021.01.08 |
[HackerRank] Diagonal Difference (Algorithm) (0) | 2021.01.05 |