모의고사

문제 풀이
- 1번, 2번, 3번의 반복되는 찍는 방식을 배열에 담는다.
- 문제 길이만큼 반복문을 돌리며 1번, 2번, 3번의 해당 번째의 정답(각 반복되는 배열의 길이로 나눠 나머지 값)과 비교하여 맞으면 ++를 해준다. 첫번째 부터 하여 오름차순 해결
- r배열에 담아 둔 것중 max값을 추출한다.
- 반복문을 돌려 max값과 같은 것을 새로운 배열에 넣는다.
- return이 int[] 이기에 List를 int[]로 변환하여 return한다.
풀이 소스
import java.util.*;
class Solution {
public int[] solution(int[] answers) {
int[] a = {1, 2, 3, 4, 5};
int[] b = {2, 1, 2, 3, 2, 4, 2, 5};
int[] c = {3, 3, 1, 1, 2, 2, 4, 4, 5, 5};
int[] r = new int[3];
for(int i=0; i< answers.length; i++){
int num = answers[i];
if(num == a[i%a.length]) r[0]++;
if(num == b[i%b.length]) r[1]++;
if(num == c[i%c.length]) r[2]++;
}
int max = Arrays.stream(r).max().getAsInt();
List<Integer> list = new ArrayList();
for(int i=0; i< r.length; i++){
if(max == r[i]) list.add(i+1);
}
return list.stream().mapToInt(Integer::intValue).toArray();
}
}
-
오늘의 회고
-
문제 시도 및 해결
- 각 사람에 맞게 반복되는 구간을 찾는다.
- 각 answers의 index에 대해 그 사람이 무슨 답을 했는지 찾기 위해 어떻게 하면 될까 생각
- 반복되는 구간의 길이를 나눈 나머지 값을 사용하면 되겠다는 생각이 들었다.
- 오름차순인지 내림차순이지에 따라 배열에 넣는 순서 생각
- 그 후 배열의 max값을 구하기위해 for문을 사용하던 중 Arrays에서도 할 수있는 메소드가 있다는게 떠올랐다.
- 반복문을 돌려 max값에 해당하는 배열을 list에 add 후 int[]로 변환
-
학습 내용
- Arrays.stream(r).max().getAsInt(); 배열의 max값 구하는 방법
- list.stream().mapToInt(Integer::intValue).toArray(); -- List --> int[]로 변환 방법
-
다음 배울것
- 부족한 자바 문법
- 스프링 공부
- 코테 문제 풀이