728x90
▶ 문제
▶ 풀이방법
- 첫번째 풀이방법.
import java.util.*;
class Solution {
public int[] solution(int[] answers) {
int[] answer = {};
int[] n1 = new int[answers.length];
int[] n2 = new int[answers.length];
int[] n3 = new int[answers.length];
int count = 0;
for(int i = 0; i < answers.length; i++){//1번 수포자가 입력한 문제의 답
if(i % 5 == 0) count = 1;
n1[i] = count;
count++;
}
count = 1;
for(int i = 0; i < answers.length; i++){//2번 수포자가 입력한 문제의 답
if(i % 2 == 0) count = 2;
else {
if(i > 1) {
switch(n2[i-2]) {
case 1 :
count = 3;
break;
case 3 :
count = 4;
break;
case 4 :
count = 5;
break;
case 5 :
count = 1;
break;
}
}else {
count = 1;
}
}
n2[i] = count;
}
count = 3;
for(int i = 0; i < answers.length; i++){//3번 수포자가 입력한 문제의 답
if(i > 1) {
switch(n3[i-2]) {
case 3 :
count = 1;
break;
case 2 :
count = 4;
break;
case 5 :
count = 3;
break;
case 1 :
count = 2;
break;
case 4 :
count = 5;
break;
}
}
n3[i] = count;
}
int[] num = new int[3];
for(int i = 0; i < answers.length; i++) {//각 수포자의 정답 수 구하기
if(n1[i] == answers[i]) num[0]++;
if(n2[i] == answers[i]) num[1]++;
if(n3[i] == answers[i]) num[2]++;
}
int max = 0; //최대 정답 수 저장공간
String str = "";
for(int i = 0; i < 3; i++) max = Math.max(max, num[i]);
for(int i = 0; i < 3 ; i++) {
if(max == num[i]) str += i+1; //최대 정답 갯수와 같은 수포자 저장.
}
answer = new int[str.length()];
for(int i = 0; i < str.length(); i++) {
answer[i] = Integer.parseInt(str.substring(i,i+1));
}
Arrays.sort(answer);
return answer;
}
}
↑위의 코드는 직접 1,2,3의 수포자가 입력한 정답을 일일이 구함..
- 두번째 풀이방법
import java.util.*;
class Solution {
public int[] solution(int[] answers) {
int[] answer = {};
int[] n1 = {1,2,3,4,5};
int[] n2 = {2,1,2,3,2,4,2,5};
int[] n3 = {3,3,1,1,2,2,4,4,5,5};
int[] num = new int[3];
for(int i = 0; i < answers.length; i++) { //코드 일일이 구하지 않고 나머지 값으로 배열 비교
if(n1[i%5] == answers[i]) num[0]++;
if(n2[i%8] == answers[i]) num[1]++;
if(n3[i%10] == answers[i]) num[2]++;
}
int max = 0;
String str = "";
for(int i = 0; i < 3; i++) max = Math.max(max, num[i]);
for(int i = 0; i < 3 ; i++) {
if(max == num[i]) str += i+1;
}
answer = new int[str.length()];
for(int i = 0; i < str.length(); i++) {
answer[i] = Integer.parseInt(str.substring(i,i+1));
}
Arrays.sort(answer);
return answer;
}
}
- 첫번째 코드를 간단하게 구현,,!
728x90
'Algorithm > PROGRAMMERS[Java]' 카테고리의 다른 글
Lv1. 완주하지 못한 선수 (0) | 2022.04.24 |
---|---|
Lv1. K번째 수 (0) | 2022.04.24 |
Lv1. 체육복 (0) | 2022.04.21 |
Lv1. 폰켓몬 (0) | 2022.04.20 |
Lv1. 실패율[카카오] (0) | 2022.04.18 |