public class DontGiveUp3 {
public static void main(String[] args) {
int[] answers = {1,2,3,4,5};
int[] result = solution(answers);
System.out.println(" } ");
System.out.print(" result : { ");
for (int i = 0; i < result.length; i++) {
System.out.print(result[i]);
if(i!=result.length-1) {
System.out.print(",");
}
}
System.out.println(" } ");
}
private static int[] solution(int[] answers) {
int[] player1 = new int[answers.length];
int[] player2 = new int[answers.length];
int[] player3 = new int[answers.length];
int c = 0;
int[] p1={ 1, 2, 3, 4, 5};
for (int i = 0; i < answers.length; i++) {
player1[i] = p1[c];
if (c == 4) {
c = 0;
} else {
c++;
}
}
c = 0;
int[] p2 = { 2, 1, 2, 3, 2, 4, 2, 5 };
for (int i = 0; i < answers.length; i++) {
player2[i] = p2[c];
if (c == 7) {
c = 0;
} else {
c++;
}
}
c = 0;
int[] p3 = { 3, 3, 1, 1, 2, 2, 4, 4, 5, 5 };
for (int i = 0; i < answers.length; i++) {
player3[i] = p3[c];
if (c == 9) {
c = 0;
} else {
c++;
}
}
System.out.print(" player1 : { ");
for (int i = 0; i < player1.length; i++) {
System.out.print(+player1[i]);
if(i!=player1.length-1) {
System.out.print(",");
}
}
System.out.println(" } ");
System.out.print(" player2 : { ");
for (int i = 0; i < player2.length; i++) {
System.out.print(player2[i]);
if(i!=player2.length-1) {
System.out.print(",");
}
}
System.out.println(" } ");
System.out.print(" player3 : { ");
for (int i = 0; i < player3.length; i++) {
System.out.print(player3[i]);
if(i!=player3.length-1) {
System.out.print(",");
}
}
System.out.println(" } ");
int count1 = 0;
int count2 = 0;
int count3 = 0;
for (int i = 0; i < answers.length; i++) {
count1 += (player1[i]==answers[i])? 1:0;
}
for (int i = 0; i < answers.length; i++) {
count2 += (player2[i]==answers[i])? 1:0;
}
for (int i = 0; i < answers.length; i++) {
count3 += (player3[i]==answers[i])? 1:0;
}
System.out.println("count1 : "+count1+" count2 : "+count2+" count3 : "+count3);
int[] table = {count1, count2, count3};
int[] rank = new int[3];
for (int i = 0; i < table.length; i++) {
for (int j = 0; j < table.length; j++) {
if(table[i]<table[j]) {
rank[i]++;
}
}
}
int to = 0;
for (int i = 0; i < rank.length; i++) {
to += (rank[i]==0)? 1:0;
}
int[] answer = new int[to];
c = 0;
for (int i = 0; i < table.length; i++) {
if(rank[i]==0) {
answer[c] = i+1;
c++;
}
}
return answer;
}
}
특정 형식의 답안을 제출하는 학생.
제공되는 정답지.
비교하여 최대 정답자를 ( 동점자가 있다면 학생 순서대로 ) 추출하는 코드이다.
유지보수를 위해 학생수가 늘어나더라도 반영할 수 있도록 코딩해보았다.
다른 사람들의 풀이를 보니 arrayList를 사용해서 정답자수의 조절을 했는데
코딩테스트에 answers의 타입이 int로 변환하지 않고 해보고자
최대 정답자 수를 따로 카운트해서 배열로 넣어보았다.
학생들의 답안 배열을 만드는데에 나눗셈을 쓸까하다가 그냥 했는데
나눗셈을 쓰는것이 더 좋았겠다.
'코딩테스트 연습' 카테고리의 다른 글
폰켓몬을 받을때 최대 몇 종류를 가져갈 수 있을까? (0) | 2021.08.20 |
---|---|
체육복 서로 빌려줘 수업받을 수 있는 인원 확인하는 코드 (0) | 2021.08.20 |
배열의 일부를 정렬하고 정렬한 수 중에 k 번째 수를 구하라. (0) | 2021.08.20 |
배열내 세개의 숫자의 합이 소수인 개수 구하기. (0) | 2021.08.20 |
a,b의 내적 구하기 (0) | 2021.08.20 |