문제 링크
요약
- 쉬운문제
최종
결과
- 뭐 그냥 문제에서 하라는 대로 하면 된다.
#include <string>
#include <vector>
using namespace std;
vector<int> solution(vector<int> answers) {
int student[3] = {0};
int student_2_map[8] = {2, 1, 2, 3, 2, 4, 2, 5};
int student_3_map[10] = {3, 3, 1, 1, 2, 2, 4, 4, 5, 5};
for (int i = 0; i < answers.size(); i++) {
if (answers[i] == ((i % 5) + 1)) {
student[0]++;
}
if (answers[i] == student_2_map[i & 0x7]) {
student[1]++;
}
if (answers[i] == student_3_map[i % 10]) {
student[2]++;
}
}
if (student[0] > student[1] && student[0] > student[2]) {
return {1};
}
if (student[1] > student[0] && student[1] > student[2]) {
return {2};
}
if (student[2] > student[0] && student[2] > student[1]) {
return {3};
}
if (student[0] == student[1] && student[1] > student[2]) {
return {1, 2};
}
if (student[0] == student[2] && student[2] > student[1]) {
return {1, 3};
}
if (student[1] == student[2] && student[2] > student[0]) {
return {2, 3};
}
return {1, 2, 3};
}- 몇가지만 짚으면:
- 2번과 3번 학생의 경우에는 귀찮게 규칙찾지 말고 그냥 저렇게 array에 때려넣는게 더 쉽다.
- 그리고, 동점자 처리의 경우에도 뭐
for문 돌려서 해결할 수도 있는데 어차피 학생이 3명이니까 그냥 저렇게 무지성 코딩하는 것이 더 구현시간을 줄일 수 있다.
