#문제
https://programmers.co.kr/learn/courses/30/lessons/42840
# 접근방식
1) 우선 수포자 3명의 패턴을 리스트로 저장한다
2) 수포자 3명의 패턴을 answers 리스트와 비교해서 점수를 낸다 - (size%index)을 이용한 반복문 없는 loop strategy
3) 점수를 score list에 담는다
4) score list의 최댓값을 낸다
5) score list의 최댓값과 score list의 값을 하나하나 비교하며 최댓값과 같으면 answer list에 넣는다
#1st Trial
def solution(answers):
answer = []
arr1=[1,2,3,4,5]
arr2=[2,1,2,3,2,4,2,5]
arr3=[3,3,1,1,2,2,4,4,5,5]
score=[0,0,0]
score[0]=returnScore(answers,arr1)
score[1]=returnScore(answers,arr2)
score[2]=returnScore(answers,arr3)
sortedScore=sorted(score)
for i in range(len(score)):
if(sortedScore[2]==score[i]): answer.append(i+1)
answer.sort()
return answer
def returnScore(answers,arr):
score=0
for i in range(len(answers)):
size=len(arr)
idx=i%size
if answers[i]==arr[idx]: score+=1
return score
-> 성공은 했지만 뭔가 깔끔하지 못한느낌.. 굳이 함수로 빼서 for문을 세 번 실행할 필요가 없는듯 하다.
#2nd Trial
def solution(answers):
answer = []
arr1=[1,2,3,4,5]
arr2=[2,1,2,3,2,4,2,5]
arr3=[3,3,1,1,2,2,4,4,5,5]
score=[0,0,0]
for i in range(len(answers)):
if answers[i]==arr1[i%(len(arr1))]: score[0]+=1
if answers[i]==arr2[i%(len(arr2))]: score[1]+=1
if answers[i]==arr3[i%(len(arr3))]: score[2]+=1
for i in range(len(score)):
if(max(score)==score[i]): answer.append(i+1)
answer.sort()
return answer
- 고찰: Python List Rules!
+) c++ 풀이
#include <string>
#include <vector>
#include<algorithm>
using namespace std;
vector<int> solution(vector<int> answers) {
vector<int> answer;
int arr1[] = { 1,2,3,4,5 };
int arr2[] = { 2,1,2,3,2,4,2,5 };
int arr3[] = { 3,3,1,1,2,2,4,4,5,5 };
int score[3] = { 0 };
for (int i = 0; i < answers.size(); i++) {
if (arr1[i % 5] == answers[i]) score[0]++;
if (arr2[i % 8] == answers[i]) score[1]++;
if (arr3[i % 10] == answers[i]) score[2]++; }
int maxVal = *max_element(score, score + 3);
for (int i = 0; i < 3; i++) {
if (score[i] == maxVal) {
answer.push_back(i + 1); }
}
return answer; } /*max_element함수를 통해 array의 최댓값 구할수 있다.*/
'Computer Science > 알고리즘(백준+프로그래머스)' 카테고리의 다른 글
그래프와 관련 알고리즘(DFS,BFS) (0) | 2021.11.28 |
---|---|
프로그래머스 Level 2- 소수찾기(완전탐색) (0) | 2021.10.30 |
week 7- 수열 조합 & 계획 쇼핑의 제왕 (0) | 2020.05.11 |
문제해결기법 3주차) 움직이는 하노이의 탑 (0) | 2020.04.05 |
[문제해결기법 2주차] Error (0) | 2020.04.05 |