코테/구현
[java] 프로그래머스 스쿨 모의고사
상똥
2023. 12. 27. 17:44
풀이 |
1. 학생 세 명의 정답 패턴을 각각 배열에 저장한다 2. list를 두 개 선언한다 - list는 모든 값을 저장하는 용도 - list2는 가장 큰 값을 가지는 사람의 번호를 저장하는 용도로 쓰인다 3. 함수 check에서 no[i%no.length]의 값과 정답의 값이 같다면 score를 증가시킨다 4. 학생 순서대로 check를 호출해서 list에 저장한다 5. list의 가장 큰 값을 max에 저장한 후, 반복문으로 정답의 수와 max값이 같다면 list2에 i+1을 추가한다 6. list2를 배열로 바꿔 반환한다 |
회고 |
- list의 가장 큰 값 = Collections.max - list를 배열로 : int[] array = list.stream().mapToInt(Integer::intValue).toArray(); |
코드 (접은 글) |
import java.util.*;
class Solution {
static int[] no1 = {1,2,3,4,5};
static int[] no2 = {2,1,2,3,2,4,2,5};
static int[] no3 = {3,3,1,1,2,2,4,4,5,5};
public int[] solution(int[] answers) {
List<Integer> list = new ArrayList<>();
List<Integer> list2 = new ArrayList<>();
list.add(check(answers, no1));
list.add(check(answers, no2));
list.add(check(answers, no3));
int max = Collections.max(list);
for(int i=0;i<3;i++){
if (list.get(i)==max)
list2.add(i+1);
}
int[] answer = list2.stream().mapToInt(Integer::intValue).toArray();
return answer;
}
public static int check(int[] answers, int[] no){
int score=0;
for(int i=0;i<answers.length;i++){
int a = answers[i];
if(a==no[i%no.length])
score++;
}
return score;
}
}