Coding Test

[Coding Test] 프로그래머스 1단계 - 모의고사

한비Skyla 2024. 11. 7. 20:49

📚 문제

 

 

✏️ 메모 

 

        1. 학생들의 루틴 배열 과 정답의 배열을 비교해서 맟줬으면 점수 + 1

        2. 그 각각의 숫자를 봐서 가장 높은 점수를 확인.

        3. 정답을 맞힌 학생 수가 몇 명일지 모르니 list 로 저장한 후 배열로 변환.

        4. List 를 배열로 바꿔줌.

 

 

[Java] 배열을 List로, List를 배열로 변환하기

배열을 List로 Arrays.asList() new ArrayList(Arrays.asList()) Collectors.toList() ArrayList를 배열로 toArray() - java.util.List 배열을 List로 1. Arrays.asList() 코드 import java.util.Arrays; import java.util.List; public class ArrayConversion

hianna.tistory.com

 

 

[Java] Stream 사용하여 배열(array)의 max, min 구하기

Stream 사용하여 배열 array의 max, min 구하기 1) max int arrayMax = Arrays.stream(arr).max().getAsInt(); 2) min int arrayMin = Arrays.stream(arr).min().getAsInt();

devfunny.tistory.com

 

 

🔎 문제해결

import java.util.*;

class Solution {
    public int[] solution(int[] answers) {
        int[] fistRoutine = {1,2,3,4,5};
        int[] secondRoutine = {2,1,2,3,2,4,2,5};
        int[] thirdRoutine = {3,3,1,1,2,2,4,4,5,5};
        // 점수를 받는 배열 [1번 점수, 2번 점수, 3번 점수]
        int[] scores = new int[3];

        // 학생들의 루틴 배열 과 정답의 배열을 비교해서 맟줬으면 점수 + 1

        for (int i = 0; i < answers.length; i++) {
            // 1번 학생의 점수
            if (fistRoutine[i%5] == answers[i]) scores[0] += 1;
            if (secondRoutine[i%8] == answers[i]) scores[1] += 1;
            if (thirdRoutine[i%10] == answers[i]) scores[2] += 1;
        }

        // 그 각각의 숫자를 봐서 가장 높은 점수를 확인.
        int maxScore = Arrays.stream(scores).max().getAsInt();

      
        // 정답을 맞힌 학생 수가 몇 명일지 모르니 list 로 저장한 후 배열로 변환
        List<Integer> resultList = new ArrayList<>();
        for (int i = 0; i < 3 ; i ++) {
            if (scores[i] == maxScore) {
                resultList.add(i+1);
            }
        }
        // List 를 배열로 바꿔줌
        int[] result = new int[resultList.size()];
        for (int i = 0; i < resultList.size(); i++) {
            result[i] = resultList.get(i);
        }

        return result;
    }
}