문제
https://programmers.co.kr/learn/courses/30/lessons/42840
코딩테스트 연습 - 모의고사
수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는
programmers.co.kr
풀이
따로 문제를 풀기 위한 알고리즘은 필요하지 않은 거 같고 구현으로 문제를 해결할 수 있었다.
1, 2, 3번 수포자의 정답 패턴을 배열로 만들어 주었고, 각각의 인덱스를 따로 변수 선언 해주어(oneIdx, twoIdx...) while 루프를 돌며 각각의 점수를 측정해주었다. while 루프에선 정답 패턴의 크기(idx)에 맞게만 돌 수 있도록 정답 패턴의 idx를 넘어가면 0으로 초기화 해주었고 while 루프가 끝나 각 수포자들의 점수를 얻어오면 최댓값을 도출하여 최댓값을 가지는 사람들을 leaderBoard에 넣어주고 leaderBoard의 각각의 요소들을 다시 answers로 리턴해줄 수 있도록 answers에 넣어주었다.
int 변수를 각각 선언하는 것 보다는 3의 크기를 가진 배열로 관리해주면 코드가 더 깔끔하고 보기 좋을 거 같다.
코드
class Solution {
public int[] solution(int[] answers) {
final int[] one = {1, 2, 3, 4, 5};
final int[] two = {2, 1, 2, 3, 2, 4, 2, 5};
final int[] three = {3, 3, 1, 1, 2, 2, 4, 4, 5, 5};
int temp = 0;
int oneScore = 0;
int twoScore = 0;
int threeScore = 0;
int answerIdx = 0;
int oneIdx = 0;
int twoIdx = 0;
int threeIdx = 0;
while (true) {
if(one[oneIdx] == answers[answerIdx]) {
oneScore++;
}
if(two[twoIdx] == answers[answerIdx]) {
twoScore++;
}
if(three[threeIdx] == answers[answerIdx]) {
threeScore++;
}
oneIdx++;
twoIdx++;
threeIdx++;
answerIdx++;
if(oneIdx == 5) {
oneIdx = 0;
}
if(twoIdx == 8) {
twoIdx = 0;
}
if(threeIdx == 10) {
threeIdx = 0;
}
if(answerIdx == answers.length) {
break;
}
}
temp = Math.max(oneScore, twoScore);
temp = Math.max(temp, threeScore);
String leaderBoard = "";
if(temp == oneScore) {
leaderBoard += "1";
}
if(temp == twoScore) {
leaderBoard += "2";
}
if(temp == threeScore) {
leaderBoard += "3";
}
int[] answer = new int[leaderBoard.length()];
for(int i = 0; i < leaderBoard.length(); i++) {
answer[i] = Character.getNumericValue(leaderBoard.charAt(i));
}
return answer;
}
}
'프로그래머스' 카테고리의 다른 글
[프로그래머스] 프로그래머스 Level1 [1차] 비밀지도 Java (카카오 코딩테스트) (0) | 2022.05.12 |
---|---|
[프로그래머스] 프로그래머스 Level1 실패율 Java (카카오 코딩테스트) (0) | 2022.05.06 |
[프로그래머스] 프로그래머스 Level3 정수 삼각형 Java (0) | 2022.05.06 |
[프로그래머스] 프로그래머스 Level2 점프와 순간 이동 Java (0) | 2022.05.05 |
[프로그래머스] 프로그래머스 Level1 신규 아이디 추천 Java (카카오 코딩테스트) (0) | 2022.05.04 |