알고리즘/프로그래머스 문제

프로그래머스 모의고사 문제 _ java

천사진수님 2019. 3. 15. 15:35
반응형

프로그래머스 모의고사 문제 _ java


문제

 

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


1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ...

2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ...

3번 수포자가 찍는 방식: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ...


1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers가 주어졌을 때, 가장 많은 문제를 맞힌 사람이 누구인지 배열에 담아 return 하도록 solution 함수를 작성해주세요.




해답.

class Solution {

    public int[] solution(int[] answers) {

int[] result_a = { 1, 2, 3, 4, 5 };

int[] result_b = { 2, 1, 2, 3, 2, 4, 2, 5 };

int[] result_c = { 3, 3, 1, 1, 2, 2, 4, 4, 5, 5 };

int[] count_abc = { 0, 0, 0 }; // 점수 a,b,c

int max_num, max_cnt = 0;


for (int i = 0; i < answers.length; i++) {

if (answers[i] == result_a[i % result_a.length])

count_abc[0] = count_abc[0] + 1;

if (answers[i] == result_b[i % result_b.length])

count_abc[1] = count_abc[1] + 1;

if (answers[i] == result_c[i % result_c.length])

count_abc[2] = count_abc[2] + 1;

}

        // 각 문제별 1,2,3번의 정답여부 확인-> 정답 카운팅 

// System.out.printf("a : %d , b : %d , c : %d \n ", count_abc[0], count_abc[1], count_abc[2]);


max_num = count_abc[0];

if (max_num < count_abc[1]) max_num = count_abc[1];

if (max_num < count_abc[2]) max_num = count_abc[2];

        


for (int i = 0; i < 3; i++) {

if (count_abc[i] == max_num) max_cnt += 1;

}


int[] answer = new int[max_cnt];

for (int i = 0; i < 3; i++) {

if(count_abc[i] == max_num) {

// System.out.println("i : " + i);

// System.out.println("count_abc[i] : " + count_abc[i]+ "max_cnt : " + max_num);

answer[i] = i+1;

}

}

// for (int i = 0; i < answer.length ; i++) {

// System.out.println(answer[i]);

// }

return answer;

    }

}



위와같이 작성하면 실행단계에서 테스트 2개는 성공하지만./ 제출할경우 35.7/100 점으로 런타임에러로 실패한다....

이유를모르겠다.... 

반응형