programmers.co.kr/learn/courses/30/lessons/42840
코딩테스트 연습 - 모의고사
수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는
programmers.co.kr
사실 이번 문제는 약간 노가다성에 가깝게 푼 것 같기도 하다.
크게 설명할게 없는 것 같은 ㅠㅠ
작성 코드
public static int[] solution(int[] answers) {
int[] math1 = { 1, 2, 3, 4, 5 };
int num1 = 0;
int cnt1 = 0;
int[] math2 = { 2, 1, 2, 3, 2, 4, 2, 5 };
int num2 = 0;
int cnt2 = 0;
int[] math3 = { 3, 3, 1, 1, 2, 2, 4, 4, 5, 5 };
int num3 = 0;
int cnt3 = 0;
for (int i = 0; i < answers.length; i++) {
// 수포자 1의 답안 패턴을 정답 패턴과 비교해서 맞을때마다 cnt1++;
if (math1[num1] == answers[i]) {
cnt1++;
System.out.println(math1[num1] + " : " + answers[i]);
}
num1++;
if (num1 == 5) {
num1 = 0;
}
}
System.out.println("수포자 1의 점수 : " + cnt1);
for (int i = 0; i < answers.length; i++) {
// 수포자 2의 답안 패턴을 정답 패턴과 비교해서 맞을때마다 cnt2++;
if (math2[num2] == answers[i]) {
cnt2++;
System.out.println(math2[num2] + " : " + answers[i]);
}
num2++;
if (num2 == 8) {
num2 = 0;
}
}
System.out.println("수포자 2의 점수 : " + cnt2);
for (int i = 0; i < answers.length; i++) {
// 수포자 3의 답안 패턴을 정답 패턴과 비교해서 맞을때마다 cnt3++;
if (math3[num3] == answers[i]) {
cnt3++;
System.out.println(math3[num3] + " : " + answers[i]);
}
num3++;
if (num3 == 10) {
num3 = 0;
}
}
System.out.println("수포자 3의 점수 : " + cnt3);
int length = 0;
int[] answer = {};
// 이 부분이 노가다인데...아직 많이 모자란가 보다.
// 각각의 숫자들을 비교해 가장 많이 맞은 사람이 수 만큼 배열의 길이를 초기화해서 해당 값을 넣어서 리턴한다.
if (cnt1 > cnt2 && cnt1 > cnt3) {
length = 1;
answer = new int[length];
answer[0] = 1;
} else if (cnt2 > cnt1 && cnt2 > cnt3) {
length = 1;
answer = new int[length];
answer[0] = 2;
} else if (cnt3 > cnt1 && cnt3 > cnt2) {
length = 1;
answer = new int[length];
answer[0] = 3;
} else if (cnt1 == cnt2 && cnt1 > cnt3) {
length = 2;
answer = new int[length];
answer[0] = 1;
answer[1] = 2;
} else if (cnt2 == cnt3 && cnt2 > cnt1) {
length = 2;
answer = new int[length];
answer[0] = 2;
answer[1] = 3;
} else if (cnt3 == cnt1 && cnt3 > cnt2) {
length = 2;
answer = new int[length];
answer[0] = 1;
answer[1] = 3;
} else if (cnt1 == cnt2 && cnt1 == cnt3) {
length = 3;
answer = new int[length];
answer[0] = 1;
answer[1] = 2;
answer[2] = 3;
}
System.out.println(Arrays.toString(answer));
return answer;
}
리스트, SET, MAP 등에 대해서 조금 더 심도 있는 공부가 필요할 것 같다.
[깃허브]
https://github.com/RUCKUSJERRY/practiceOfJava/blob/main/Prs_Pratice/src/com/level01/mathGiveUp.java
RUCKUSJERRY/practiceOfJava
Contribute to RUCKUSJERRY/practiceOfJava development by creating an account on GitHub.
github.com
'문제풀이 > 프로그래머스' 카테고리의 다른 글
체육복 / 프로그래머스 연습문제 / programmers / level1 / Java (0) | 2021.05.02 |
---|---|
K번째수 / 프로그래머스 연습문제 / programmers / level1 / Java (0) | 2021.05.01 |
신규 아이디 추천 / 프로그래머스 연습문제 / programmers / level1 / Java (0) | 2021.04.30 |
완주하지 못한 선수 / 프로그래머스 연습문제 / programmer / level1 / java (0) | 2021.04.28 |
크레인 인형뽑기 게임 / 프로그래머스 연습문제 / programmers / Level 1 / 스택이 뭔지도 모르고 풀어 버린... (0) | 2021.04.27 |