티스토리 뷰

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
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함