smooth waters run deep

1d-1c/Programmers

Level1_모의고사 (JAVA)

yeon_11 2020. 11. 2. 18:07
 

코딩테스트 연습 - 모의고사

수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는

programmers.co.kr

import java.util.ArrayList;
import java.util.List;

class Solution {
    public int[] solution(int[] answers) {
        int[] temp = new int[3];

		List<Integer> ans = new ArrayList<>();

		int[] supoja1 = {1,2,3,4,5};
		int[] supoja2 = {2,1,2,3,2,4,2,5};
		int[] supoja3 = {3,3,1,1,2,2,4,4,5,5};

		for(int i=0; i<answers.length; i++){
			if(answers[i] == supoja1[i%supoja1.length])
				temp[0]++;
			if(answers[i] == supoja2[i%supoja2.length])
				temp[1]++;
			if(answers[i] == supoja3[i%supoja3.length])
				temp[2]++;
		}

		int max = Math.max(Math.max(temp[0],temp[1]), temp[2]);
		if(max == temp[0])
			ans.add(0);
		if(max == temp[1])
			ans.add(1);
		if(max == temp[2])
			ans.add(2);

		int[] answer = new int[ans.size()];

		for(int i=0; i<ans.size(); i++){
			answer[i] = ans.get(i)+1;
		}
        
		return answer;
    }
}

 

1. answers를 수포자1,2,3의 정답과 하나씩 비교해야하므로 완전탐색 문제이다.

 

2. temp[] 배열의 인덱스는 각각 수포자1,2,3의 점수가 된다.

 

3. 수포자1,2,3의 점수인 temp[]배열의 값 중 최댓값을 찾는다.

 

4. 최댓값과 temp[0],[1],[2] 값이 같으면 - 최고점을 가지는 수포자를 의미한다.

 

5. 최고점을 가지는 수포자를 ans에 넣어주고, answer[] 배열에 ans.get[i]값으로 채워준다.

 

 

'1d-1c > Programmers' 카테고리의 다른 글

Level2_기능개발 (C++) (JAVA)  (0) 2020.11.05
Level1_체육복 (JAVA)  (0) 2020.11.02
Level1_예산 (JAVA)  (0) 2020.11.02
Level1_두 개 뽑아서 더하기 (JAVA)  (0) 2020.10.31
Level1_크레인 인형뽑기 게임 (JAVA)  (0) 2020.10.31