공부 흔적남기기

프로그래머스 모의고사 본문

코테/프로그래머스

프로그래머스 모의고사

65살까지 코딩 2022. 1. 15. 10:48
728x90
반응형
import java.util.*;

class Solution {
    public int[] solution(int[] answers) {
        int firstAnswer = 0;
        int secondAnswer = 0;
        int thirdAnswer = 0;
        //지금 생각해보니 그냥 1번 2번 3번 배열로 받고
        // 반복문으로 비교하면 되는 거였음 
        // 멍청해서 if문으로 다처리해버림..
        for(int i=0; i<answers.length; i++){
            //1번 방식
            if(i% 5 ==0){
                if(answers[i] == 1){
                    firstAnswer++;
                }
            }else if(i% 5 ==1){
                if(answers[i] == 2){
                    firstAnswer++;
                }
            }else if(i% 5 ==2){
                if(answers[i] == 3){
                    firstAnswer++;
                }
            }else if(i% 5 ==3){
                if(answers[i] == 4){
                    firstAnswer++;
                }
            }else{
                if(answers[i] == 5){
                    firstAnswer++;
                }
            }
            //2번 방식
            if(i% 8 ==0 ||i% 8 ==2 || i% 8 ==4 || i% 8 ==6){
                if(answers[i] == 2){
                    secondAnswer++;
                }
            }else if(i% 8 ==1){
                if(answers[i] == 1){
                    secondAnswer++;
                }
            }else if(i% 8 ==3){
                if(answers[i] == 3){
                    secondAnswer++;
                }
            }else if(i% 8 ==5){
                if(answers[i] == 4){
                    secondAnswer++;
                }
            }else if(i% 8 ==7){
                if(answers[i] == 5){
                    secondAnswer++;
                }
            }

            //3번 방식

            if(i% 10 ==0 ||i% 10 ==1){
                if(answers[i] == 3){
                    thirdAnswer++;
                }
            }else if(i% 10 ==2 || i% 10 ==3){
                if(answers[i] == 1){
                    thirdAnswer++;
                }
            }else if(i% 10 ==4 || i% 10 ==5){
                if(answers[i] == 2){
                    thirdAnswer++;
                }
            }else if(i% 10 ==6 || i% 10 ==7){
                if(answers[i] == 4){
                    thirdAnswer++;
                }
            }else if(i% 10 ==8 || i%10 == 9){
                if(answers[i] == 5){
                    thirdAnswer++;
                }
            }
        }
        Integer[] arr = {firstAnswer, secondAnswer, thirdAnswer};
        //여기까지는 그냥 풀었는데
        //이 return하는게 은근히 귀찮았음
        int max = -1;
        //점수의 max값을 찾아주고
        for(int i =0; i<arr.length; i++){
            if(arr[i] > max){
                max = arr[i];
            }
        }
        //max와 같다면 
        //index는 0부터시작하므로 +1을 해줘서 저장 return값이 1 2 3 이렇게 내보내줘야하기때문
        ArrayList<Integer> arrayList = new ArrayList<>();
        for(int i =0; i<arr.length; i++){
            if(arr[i]==max){
                arrayList.add(i+1);
            }
        }
        //arrayList 배열로 바꿔서 return~!
        int[] answer = new int[arrayList.size()];
        for(int i =0; i<arrayList.size(); i++){
            answer[i] = arrayList.get(i);
        }
        for (int i : answer) {
            System.out.println(i);
        }
        return answer;
    }
}

출처:https://programmers.co.kr/learn/courses/30/lessons/42840

 

코딩테스트 연습 - 모의고사

수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는

programmers.co.kr

 

728x90
반응형