우선은 문제 해결을 목표로 하고
좀 더 효율적인 코드는 이 후에 생각하는 방식으로 진행하고 있다
아래 코드로 작성을 했는데 논리적으로 어디가 잘못됐는지 모르겠는데
10, 11, 12 케이스에서 실패를 했다
import java.util.*;
class Solution {
public int[] solution(int[] answers) {
int[] answer = {};
int[] stu1 = {1, 2, 3, 4, 5};
int[] stu2 = {2, 1, 2, 3, 2, 4, 2, 5};
int[] stu3 = {3, 3, 1, 1, 2, 2, 4, 4, 5, 5};
ArrayList<Integer> list = new ArrayList<>();
list.add(0);
list.add(0);
list.add(0);
for(int i = 0; i < answers.length; i++){
if(answers[i] == stu1[i % stu1.length]){
list.set(0, list.get(0) + 1);
}
if(answers[i] == stu2[i % stu2.length]){
list.set(1, list.get(1) + 1);
}
if(answers[i] == stu3[i % stu3.length]){
list.set(2, list.get(2) + 1);
}
}
int maxCount = 0;
if(Collections.max(list) == list.get(0)) maxCount++;
if(Collections.max(list) == list.get(1)) maxCount++;
if(Collections.max(list) == list.get(2)) maxCount++;
answer = new int[maxCount];
maxCount = 0;
if(list.get(0) == Collections.max(list)) answer[maxCount++] = 1;
if(list.get(1) == Collections.max(list)) answer[maxCount++] = 2;
if(list.get(2) == Collections.max(list)) answer[maxCount++] = 3;
return answer;
}
}
고민을 하다가
최대값받는 부분만 수정을 했는데
통과를 했다 ;;
import java.util.*;
class Solution {
public int[] solution(int[] answers) {
int[] answer = {};
int[] stu1 = {1, 2, 3, 4, 5};
int[] stu2 = {2, 1, 2, 3, 2, 4, 2, 5};
int[] stu3 = {3, 3, 1, 1, 2, 2, 4, 4, 5, 5};
ArrayList<Integer> list = new ArrayList<>();
list.add(0);
list.add(0);
list.add(0);
for(int i = 0; i < answers.length; i++){
if(answers[i] == stu1[i % stu1.length]){
list.set(0, list.get(0) + 1);
}
if(answers[i] == stu2[i % stu2.length]){
list.set(1, list.get(1) + 1);
}
if(answers[i] == stu3[i % stu3.length]){
list.set(2, list.get(2) + 1);
}
}
int maxCount = 0;
int max = Collections.max(list);
if(max == list.get(0)) maxCount++;
if(max == list.get(1)) maxCount++;
if(max == list.get(2)) maxCount++;
answer = new int[maxCount];
maxCount = 0;
if(list.get(0) == max) answer[maxCount++] = 1;
if(list.get(1) == max) answer[maxCount++] = 2;
if(list.get(2) == max) answer[maxCount++] = 3;
return answer;
}
}
시간 초과는 따로 뜨는걸로 알고있는데
잘못알고 있는건가...
어쨌든 통과는 했다...
근데 딱봐도 코드가 비효율적이라 조금더 생각해봐야겠다
'알고리즘, SQL' 카테고리의 다른 글
프로그래머스 SQL 문제풀이 성분으로 구분한 아이스크림 총 주문량 (1) | 2024.09.12 |
---|---|
프로그래머스 알고리즘 문제풀이 달리기 경주 (시간 초과) (0) | 2024.08.28 |
프로그래머스 알고리즘 문제풀이 햄버거 만들기 (시간 초과) (0) | 2024.08.22 |
프로그래머스 코딩테스트연습 133499 '옹알이 (2)' (0) | 2024.08.13 |