Development Logs/Algorithms
[JAVA] 프로그래머스 : 모의고사 (코딩테스트 고득점 kit > 완전탐색)
유뱅유뱅뱅
2020. 7. 20. 00:01
반응형
https://programmers.co.kr/learn/courses/30/lessons/42840
코딩테스트 연습 - 모의고사
수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 ��
programmers.co.kr
첫 번째 풀이
수포자 3명이 일정하게 문제의 답을 찍으므로 person1, person2, person3 배열로 찍는 답의 순서를 적어줌
그리고 cnt 배열에 수포자 세명의 맞은 문제 갯수를 각각 저장해줌
그 중 가장 많이 맞은 문제 갯수를 찾아 max 변수에 저장해줌
그 후 가장 많이 맞은 문제 갯수와 수포자들의 맞은 문제 갯수를 비교하여 같은 경우 ArrayList에 사람 index 값을 넣어줌
코드
import java.util.*;
// 모의고사
// answers: 정답이 순서대로 들은 answers
class Solution {
public int[] solution(int[] answers) {
int[] person1 = {1, 2, 3, 4, 5};
int[] person2 = {2, 1, 2, 3, 2, 4, 2, 5};
int[] person3 = {3, 3, 1, 1, 2, 2, 4, 4, 5, 5};
int[] cnt = new int[3];
for(int i=0; i<answers.length; i++){
if(answers[i] == person1[i%5]) cnt[0]++;
if(answers[i] == person2[i%8]) cnt[1]++;
if(answers[i] == person3[i%10]) cnt[2]++;
}
// 가장 높은 점수
int max = Math.max(cnt[0], Math.max(cnt[1], cnt[2]));
List<Integer> list = new ArrayList<>();
// 가장 높은 점수를 받은 사람을 찾는 것
if(max == cnt[0])
list.add(1);
if(max == cnt[1])
list.add(2);
if(max == cnt[2])
list.add(3);
int[] answer = new int[list.size()];
for(int i=0; i<list.size(); i++){
answer[i] = list.get(i);
}
return answer;
}
}
두 번째 풀이
코드
import java.util.*;
// 모의고사
class Solution {
public int[] solution(int[] answers) {
// 찍는 방식
int[] person1 = {1, 2, 3, 4, 5};
int[] person2 = {2, 1, 2, 3, 2, 4, 2, 5};
int[] person3 = {3, 3, 1, 1, 2, 2, 4, 4, 5, 5};
int sum1 = 0;
int sum2 = 0;
int sum3 = 0;
// 맞힌 문제 수
for(int i=0; i<answers.length; i++){
if(person1[(i%5)] == answers[i])
sum1++;
if(person2[(i%8)] == answers[i])
sum2++;
if(person3[(i%10)] == answers[i])
sum3++;
}
int max = Math.max(sum1, Math.max(sum2, sum3));
List<Integer> list = new ArrayList<>();
if(max == sum1)
list.add(1);
if(max == sum2)
list.add(2);
if(max == sum3)
list.add(3);
if(list.size()>1)
Collections.sort(list);
int[] answer = new int[list.size()];
for(int i=0; i<list.size(); i++){
answer[i] = list.get(i);
}
return answer;
}
}
반응형