th42500의 TIL

[Java] 완전탐색 - 모의고사(Lv1) 본문

Algorithm/Programmers

[Java] 완전탐색 - 모의고사(Lv1)

th42500 2022. 8. 4. 23:37

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

✔ 입출력 예시

모의고사 입출력 예시

 

 

💡 포인트

1️⃣ 정답 배열의 순서와 각각 길이가 다른 수포자의 정답 배열의 순서를 일치시킬 수 있어야 함

2️⃣ 가장 높은 점수를 받은 사람이 여럿일 경우, return하는 값을 오름차순 정렬

 

 

❓ 풀이과정

1️⃣ 각 수포자가 찍는 방식을 배열을 생성하여 담기

2️⃣ 정답 배열을 순회하며 각 번호의 수포자의 번호와 일치한다면 success[수포자 번호-1]+1

👉 현재 정답 배열의 인덱스%각 수포자 정답의 길이 = 수포자가 입력한 정답 인덱스

3️⃣ success 배열을 순회하며 최댓값 찾기

4️⃣ success 배열을 한번 더 순회하며 최댓값이 같은 수가 있는지 확인하고 있다면 리스트에 인덱스 (수포자의 번호-1) 추가

5️⃣ 수포자 번호 정답 배열에 입력

👉 인덱스는 0부터 시작하므로 수포자의 번호 입력 시 +1 해주기

 

 

❗ 결과

    👉 테스트 통과

 

 

✔ 소스코드

import java.util.ArrayList;

public class Solution {
		public static void main(String[] args) {
			int[][] sizes = { { 60, 50 }, { 30, 70 }, { 60, 30 }, { 80, 40 } };
//		int[][] sizes = {{10, 7}, {12, 3}, {8, 15}, {14, 7}, {5, 15}};
//		int[][] sizes = {{14, 4}, {19, 6}, {6, 16}, {18, 7}, {7, 11}};

			System.out.println(solution(sizes));
		}

    private public int[] solution(int[] answers) {
			int[] one = {1, 2, 3, 4, 5};
			int[] two = {2, 1, 2, 3, 2, 4, 2, 5};
			int[] three = {3, 3, 1, 1, 2, 2, 4, 4, 5, 5};
			
			ArrayList<Integer> list = new ArrayList<>();
			int[] success = new int[3];
			for (int i = 0; i < answers.length; i++) {
				if(answers[i] == one[i%one.length]) {
					success[0]++;
				}
				if(answers[i] == two[i%two.length]) {
					success[1]++;
				}
				if(answers[i] == three[i%three.length]) {
					success[2]++;
				}
			}
			
			int max = 0;
			for (int i = 0; i < success.length; i++) {
				if(max < success[i]) max = success[i];
			}
			
			for (int i = 0; i < success.length; i++) {
				if(success[i]  == max) {
					list.add(i);
				}
			}
			
			int[] answer = new int[list.size()];
			for(int i=0; i<list.size(); i++) {
				answer[i] = list.get(i)+1;
			}
			
	//		System.out.println(Arrays.toString(answer));
			return answer;
	}
}
Comments