티스토리 뷰
i | 0 | 1 | 2 | 3 | 4 |
답 | 1 | 3 | 2 | 4 | 2 |
1번 | 1 | 2 | 3 | 4 | 5 |
2번 | 2 | 1 | 2 | 3 | 2 |
3번 | 3 | 3 | 1 | 1 | 2 |
1번 수포자
1, 2, 3, 4, 5 반복.
if(answers[i] == i%5+1)
points[0]++;
2번 수포자
2 1 2 3 2 4 2 5 ... 반복. 홀수번째는 2, 짝수번째는 1, 3, 4, 5를 반복하고 있다.
i을 8으로 나눈 나머지 값을 기준으로 채점.
2로 나눈 나머지값이 0이면 2와 비교, 1이면 범위를 나눠서 채점한다.
temp = i % 8;
if(temp % 2 == 0 && answers[i] == 2)
points[1]++;
else if(temp % 2 == 1 && answers[i] == p2[(temp-1)/2])
points[1]++;
3번 수포자
3 3 1 1 2 2 4 4 5 5 반복. 3 1 2 4 5 를 2번씩 반복하고 있다.
1을 10으로 나눈 나머지 값을 범위를 나눠서 채점한다.
temp = i % 10;
if(answers[i] == p3[temp/2])
points[2]++;
이렇게 하게 되면, points에 점수가 쌓이게 된다.
for(int ele : points) {
if(ele > maxPoint)
maxPoint = ele;
}
for(int i = 0; i < points.size(); i++) {
if(points[i] == maxPoint)
answer.push_back(i+1);
}
return answer;
이후, maxPoint를 파악한 뒤, 순차적으로 maxPoint와 point가 같다면 해당 사람을 answer에 push했다.
다른 사람의 풀이
기본적으로 크게 차이가 없었다.
다만 최대값 산출에서 나는 직접 한 것에 비해, 다른 사람은 algorithm STL에서 max_element를 사용했다. 그 차이?
'■ 알고리즘 > ◻ Programmers' 카테고리의 다른 글
[C++]베스트 앨범 (0) | 2022.11.14 |
---|---|
[C++]소수 찾기 (0) | 2022.11.11 |
[C++]최소직사각형 (0) | 2022.11.10 |
[C++]H-Index (0) | 2022.11.10 |
[C++]가장 큰 수 (0) | 2022.11.09 |