PROGRAMMERS 완전탐색 모의고사
-
변수
int[] su1, su2, su3 // 수포자 1, 2, 3 배열 int max // 수포자 아이들의 최대로 맞춘 문제의 개수
-
구현로직
-
세 사람의 규칙을 배열로 받아서 정답 배열의 값과 일치하는 지 비교
-
(*) 정답 배열이 더 길기 때문에 0~정답배열까지 각 수포자의 배열 길이로 인덱스를 나눠준다!
if(su1[i%su1.length]==answers[i]) count[0]+=1;
-
(*) max값을 구해놓고, 수포자 1, 2, 3의 맞은 답 개수와 비교
-
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); }
-
(*) ArrayList가 자꾸 에러가 났는데 그 이유는 import 패키지를 안해줬기 때문!
=> import java.util.*; 해줘야 돼!
-
-
코드
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; } }
-
느낀점
-
백준으로만 풀다가 프로그래머스에서 풀려니까 좀 어려웠다…
프로그래머스로 푸는 방법도 연습해봐야겠다!
(프로그래머스의 코딩테스트 고득점 Kit 해보기)
-
문제 링크 : 프로그래머스 완전탐색 모의고사
Leave a comment