티스토리 뷰

완전 탐색을 푸는 첫날인데, 아침부터 굉장히 마음에 드는 문구를 봤다.

네, 무식한 게 최곱니다. ㅎㅎ  가끔 무지성으로 푼 풀이가 딱 들어맞으면, 그거만큼 기분 좋은 게 없어요.

 

아무튼, 문제로 들어가면

수포자 1, 2, 3 의 찍는 패턴을 배열로 저장한 뒤에 인자로 받은 정답의 배열과 하나하나 비교하여, 각자 몇 문제를 맞혔는지 확인하면 되는 문제이다. 

사실 완전 탐색은 말 그대로, 모든 경우의 수를 다 탐색하면 끝인 문제들이라, 효율적인 검색 방법을 찾는 것을 제외하고는 딱히 복잡하게 생각할 게 없는 거 같다. 

 

나머지 연산과 문제를 가장 많이 맞힌 1등 수포자 여러 명일 수도 있는 경우를 생각하여 코드를 작성하면 된다.


package com.choonham;

import java.util.ArrayList;

class Solution {
    public ArrayList<Integer> solution(int[] answers) {
    	 ArrayList<Integer> answer = new ArrayList<>();
    	 
    	 int[] su_1 = {1, 2, 3, 4, 5};
    	 int[] su_2 = {2, 1, 2, 3, 2, 4, 2, 5};
    	 int[] su_3 = {3, 3, 1, 1, 2, 2, 4, 4, 5, 5};
    	 
    	 int[] su_counts = new int[3];
    	 
    	 
    	 for(int i = 0; i < answers.length; i++) {
    		 int mod = i % su_1.length;
    		 if(su_1[mod] == answers[i]) {
    			 su_counts[0]++;
    		 }
    		 mod = i % su_2.length;
    		 if(su_2[mod] == answers[i]) {
    			 su_counts[1]++;
    		 }
    		 mod = i % su_3.length;
    		 if(su_3[mod] == answers[i]) {
    			 su_counts[2]++;
    		 }
    	 }
    	 int max = 0;
    	 for(int i = 0; i < su_counts.length; i++)  {
    		  if(su_counts[i] >= max) max = su_counts[i];
    	 }
    	 
    	 for(int i = 0; i < su_counts.length; i++)  {
   		  	if(su_counts[i] == max) answer.add(i+1);
   	 }
   	 
    	 
        return answer;
    }
}

 

뭐...LV1인 만큼 딱히 어려울 거 없이 풀 수 있다. 아마 런타임 에러가 나오시는 분들은 모듈러 연산 쪽의 연산을 잘못했을 확률이 크므로, 정답 배열을 10개 이상으로 늘려서 확인하면, 어떤 부분이 문제인 지 알 수 있을 것이다.

 

끝!!

Comments