프로그래머스 모의고사 문제 _ 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 점으로 런타임에러로 실패한다....
이유를모르겠다....