Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Mendix
- 알고리즘
- Recursion
- Bruteforce
- Sort
- 자바
- SQL
- algorithm
- 매개변수 탐색
- 트리
- lcap
- 반효경교수님
- 완전탐색
- 프로그래머스
- dfs
- 멘딕스
- git
- 자료구조
- 가중치없는그래프
- 재귀
- 백트래킹
- microflow
- 정렬
- 해시맵
- 스택
- 그래프
- MySQL
- 이분탐색
- domain model
- 집합
Archives
- Today
- Total
mondegreen
[240324] 알고리즘 리부트 37일차 - 프로그래머스 모의고사 자바 본문
반응형
처음에 큐를 써가면서 앞에서 뽑고 뒤로 넣어야 하나라는 고민을 했다. 하지만 시간이 더 걸릴 것 같아서 배열을 활용한 방법을 고민했고 모드 연산을 통해 반복문을 돌지 않고도 각 수포자의 답안을 비교할 수 있겠다는 것을 깨달았다. 그 뒤의 구현은 복잡하지 않았다. 다만 list를 어떻게 array로 변환할까 고민했고 두 가지 방식을 사용했다. 리스트에서 배열로 복사하는 방법과 스트림으로 변환해서 배열로 만드는 법. 시간은 전자가 훨씬 빠른 것 같다.
import java.util.*;
class Solution {
public int[] solution(int[] answers) {
int [] st1 = {1,2,3,4,5};
int [] st2 = {2,1,2,3,2,4,2,5};
int [] st3 = {3,3,1,1,2,2,4,4,5,5};
int cor1 = 0;
int cor2 = 0;
int cor3 = 0;
for(int i =0; i<answers.length; i++){
if(answers[i] == st1[i % 5]) cor1++;
if(answers[i] == st2[i % 8]) cor2++;
if(answers[i] == st3[i % 10]) cor3++;
}
int highest = Math.max(cor1, Math.max(cor2, cor3));
List<Integer> list = new ArrayList<>();
if(cor1 == highest) list.add(1);
if(cor2 == highest) list.add(2);
if(cor3 == highest) list.add(3);
int [] answer = new int [list.size()];
for(int i =0; i<list.size(); i++) answer[i] = list.get(i);
return answer;
//return list.stream().mapToInt(Integer::intValue).toArray();
}
}
반응형
'알고리즘 풀이 및 리뷰 > 프로그래머스' 카테고리의 다른 글
[240326] 알고리즘 리부트 39일차 - 프로그래머스 올바른 괄호 자바 (0) | 2024.03.26 |
---|---|
[240325] 알고리즘 리부트 38일차 - 프로그래머스 방문 길이 자바 (1) | 2024.03.25 |
[240324] 알고리즘 리부트 37일차 - 프로그래머스 실패율 자바 (0) | 2024.03.24 |
[240324] 알고리즘 리부트 37일차 - 프로그래머스 행렬의 곱셈 자바 (0) | 2024.03.24 |
[240324] 알고리즘 리부트 37일차 - 프로그래머스 두 개 뽑아서 더하기 자바 (0) | 2024.03.24 |