티스토리 뷰

문제 링크

 

코딩테스트 연습 - 모의고사

수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 ��

programmers.co.kr

 

 

 

풀이

브루트-포스 문제다.

 

요약하자면,

포기자1, 포기자2, 포기자3의 찍는 패턴을 미리 string형으로 저장 후, 맞은 개수만큼 count를 증가시킨다.

이후, 최고 갯수를 구한다음 동점자가 있을 것을 예상해서 최고 갯수와 같은 포기자들을 answer 컨테이너에 넣어준다.

 

 

더보기
#include <string>
#include <vector>

using namespace std;

// 1, 2, 3, 4, 5
// 2, 1, 2, 3, 2, 4, 2, 5
// 3, 3, 1, 1, 2, 2, 4, 4, 5, 5

vector<int> solution(vector<int> answers) {
    vector<int> answer;
    string stu1 = "12345";      // 포기자1
    string stu2 = "21232425";   // 포기자2
    string stu3 = "3311224455"; // 포기자3
    
    int count1 = 0;     // 포기자1 개수
    int count2 = 0;     // 포기자2 개수 
    int count3 = 0;     // 포기자3 개수
    for(int i=0; i<answers.size(); i++){
        char c = answers[i]+'0';
        
        // 포기자들 맞은 개수 증가
        if(c == stu1[i%5]) count1++;
        if(c == stu2[i%8]) count2++;
        if(c == stu3[i%10]) count3++;
    }
    
    // 최고 갯수 고르기
    int maxCount = max(count1, count2);
    maxCount = max(maxCount, count3);
    
    // 최고 갯수랑 같으면 push
    if(maxCount==count1) answer.push_back(1);
    if(maxCount==count2) answer.push_back(2);
    if(maxCount==count3) answer.push_back(3);
    
    return answer;
}
728x90
반응형
댓글
01-10 09:46
링크