Write-Up/Algorithm

프로그래머스 - 모의고사

NONE_31D 2019. 3. 23. 15:39

C++

#include <string> #include <vector> #include<iostream> using namespace std; vector<int> solution(vector<int> answers) { vector<int> ans, score, grade; vector<vector<int>> supoza(3); int vsize = answers.size(); //문제 개수 구하기 int i, j, idx=10; for (j = 0; j < 2; j++) { for (i = 0; i < 5; i++) { //1번 수포자 패턴 배열에 넣기 supoza[0].push_back(i + 1); } } //2번 수포자 패턴 배열 넣기 supoza[1].push_back(2); supoza[1].push_back(1); supoza[1].push_back(2); supoza[1].push_back(3); supoza[1].push_back(2); supoza[1].push_back(4); supoza[1].push_back(2); supoza[1].push_back(5); //3번 수포자 패턴 배열 넣기 supoza[2].push_back(3); supoza[2].push_back(3); supoza[2].push_back(1); supoza[2].push_back(1); supoza[2].push_back(2); supoza[2].push_back(2); supoza[2].push_back(4); supoza[2].push_back(4); supoza[2].push_back(5); supoza[2].push_back(5); cout << supoza[0].size() << supoza[1].size() << supoza[2].size() << endl; for (i = 0; i < 3; i++) { score.push_back(0); grade.push_back(1); } for (j = 0; j < 3; j++){ for (i = 0; i < vsize; i++) { if (j == 1) idx = 8; else idx = 10; if (answers[i] == supoza[j][i%idx]) score[j]++; } } cout << score[0] << ":" << score[1] << ":" << score[2] <<":"<< endl; //성적 다 내고 동점자 처리 어케 할껀지 //석차 알고리즘으로 정리 for (i = 0; i < 3; i++) { for (j = 0; j < 3; j++) { if (score[i] < score[j]) grade[i]++; } } for (i = 0; i < 3; i++) { if (grade[i] == 1) ans.push_back(i+1); } return ans; }

코드 노답이네요 지금 생각해도

수포자[1]의 패턴은 반복문으로 굴릴 수 있을 것 같긴 한데 굳이? 같은 기분이구요

나머지는 석차 알고리즘으로 석차 구하고 노는 그런 쉬운 문제였습니다 따란

*근데 좀 더러워서 다시 풀어보고 싶은 문제 중 하나


'Write-Up > Algorithm' 카테고리의 다른 글

프로그래머스 - 소수의 합  (0) 2019.03.23
프로그래머스 - 완주하지 못한 선수  (0) 2019.03.23
프로그래머스 - 스킬트리  (0) 2019.03.23
프로그래머스 - K번째 수  (0) 2019.03.23