728x90
문제:https://programmers.co.kr/learn/courses/30/lessons/42840
import java.util.Arrays;
public class programmers42840 {
public static void main(String[] args) {
int[] answers = {1,3,2,4,2};
int[] answer = solution(answers);
for(int i = 0; i < answer.length; i++){
System.out.println(answer[i]);
}
}
public static int[] solution(int[] answers){
int[] answer = {};
int[][] patt = {{1, 2, 3, 4, 5},{2, 1, 2, 3, 2, 4, 2, 5},{3, 3, 1, 1, 2, 2, 4, 4, 5, 5}};
int[] counter = new int[3];
for(int i = 0; i < answers.length; i++){
if(answers[i] == patt[0][i%5]){
counter[0]+= 1;
}
if(answers[i] == patt[1][i%8]){
counter[1]+=1;
}
if(answers[i]== patt[2][i%10]){
counter[2]+=1;
}
}
int max = counter[0];
if(max < counter[1]) max = counter[1];
if(max < counter[2]) max = counter[2];
if(max == counter[0] && max == counter[1] && max == counter[2]) return new int[]{1,2,3};
else if(max == counter[0] && max == counter[1]) return new int[]{1,2};
else if(max == counter[0] && max == counter[2]) return new int[]{1,3};
else if(max == counter[1] && max == counter[2]) return new int[]{2,3};
else if(max == counter[0]) return new int[]{1};
else if(max == counter[1]) return new int[]{2};
return new int[]{3};
}
}
완전탐색 알고리즘 문제
각 학생의 찍기 패턴을 배열로 만들고
주어진 answers 배열과 매치하여 counter를 올려준다.
i%5같은 경우는 만약 answers 배열의 크기가 5보다 큰 상황에서 패턴과 매치시키기 위해 사용했다.
예를 들어 5번째 answer배열의 element같은 경우는 5%5 = 0 이므로 patt[0][0]번째에 위치한 '1'과 매칭을 하게 된다. (Array는 0부터 시작하니까)
728x90
'알고리즘' 카테고리의 다른 글
[프로그래머스] 체육복 [Java/자바] (0) | 2019.09.26 |
---|---|
[프로그래머스] K번째 수 [Java/자바] (0) | 2019.09.25 |
[프로그래머스]완주하지 못한 선수 [Java/자바] (0) | 2019.09.24 |
[백준]동전 0 [Java/자바] (0) | 2019.09.15 |
[백준] 덩치 [Java/자바] (0) | 2019.09.10 |