PROGRAMMERS 완전탐색 모의고사

1 minute read

  1. 변수

    int[] su1, su2, su3 // 수포자 1, 2, 3 배열
    int max // 수포자 아이들의 최대로 맞춘 문제의 개수
       
    
  2. 구현로직

    1. 세 사람의 규칙을 배열로 받아서 정답 배열의 값과 일치하는 지 비교

    2. (*) 정답 배열이 더 길기 때문에 0~정답배열까지 각 수포자의 배열 길이로 인덱스를 나눠준다!

      if(su1[i%su1.length]==answers[i]) count[0]+=1;
      
    3. (*) max값을 구해놓고, 수포자 1, 2, 3의 맞은 답 개수와 비교

    4. ArrayList랑 int[] arr는 달라!

      => ArrayList로 구한 값을 arr로 활용할때는

      ArrayList의 size() 만큼 arr배열 크기 설정하고

      ArrayList 배열의 get(i)로 arr배열에 저장

      ArrayList<Integer> arr = new ArrayList<Integer>();
            
      int[] answer = new int[arr.size()];
              for(int i=0; i<answer.length; i++){
                  answer[i] = arr.get(i);
              }
      
    5. (*) ArrayList가 자꾸 에러가 났는데 그 이유는 import 패키지를 안해줬기 때문!

      => import java.util.*; 해줘야 돼!

  3. 코드

    import java.util.*;
       
    class Solution {
        public int[] solution(int[] answers) {
            int[] su1 = {1, 2, 3, 4, 5};
            int[] su2 = {2, 1, 2, 3, 2, 4, 2, 5};
            int[] su3 = {3, 3, 1, 1, 2, 2, 4, 4, 5, 5};
       
            int[] count = new int[3];
       
            for(int i=0; i<answers.length; i++){
                if(su1[i%su1.length]==answers[i]) count[0]+=1;
                if(su2[i%su2.length]==answers[i]) count[1]+=1;
                if(su3[i%su3.length]==answers[i]) count[2]+=1;
            }
       
            int max = Math.max(Math.max(count[0], count[1]), count[2]);
       
            ArrayList<Integer> arr = new ArrayList<Integer>();
            // ArrayList<Integer> list = new ArrayList<Integer>();
            if(max == count[0]) arr.add(1);
            if(max == count[1]) arr.add(2);
            if(max == count[2]) arr.add(3);
       
            int[] answer = new int[arr.size()];
            for(int i=0; i<answer.length; i++){
                answer[i] = arr.get(i);
            }
       
            return answer;
        }
    }
       
    
  4. 느낀점

    • 백준으로만 풀다가 프로그래머스에서 풀려니까 좀 어려웠다…

      프로그래머스로 푸는 방법도 연습해봐야겠다!

      (프로그래머스의 코딩테스트 고득점 Kit 해보기)

문제 링크 : 프로그래머스 완전탐색 모의고사

Leave a comment