고득점Kit > 완전탐색 > 모의고사
※ 주의 : 문제풀이 방법은 다양합니다. 참고만 해주세요※
[문제설명]
수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다.
1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ...
2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ...
3번 수포자가 찍는 방식: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ...
1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers가 주어졌을 때, 가장 많은 문제를 맞힌 사람이 누구인지 배열에 담아 return 하도록 solution 함수를 작성해주세요.
제한 조건
- 시험은 최대 10,000 문제로 구성되어있습니다.
- 문제의 정답은 1, 2, 3, 4, 5중 하나입니다.
- 가장 높은 점수를 받은 사람이 여럿일 경우, return하는 값을 오름차순 정렬해주세요.
입출력 예
입출력 예 설명
입출력 예 #1
- 수포자 1은 모든 문제를 맞혔습니다.
- 수포자 2는 모든 문제를 틀렸습니다.
- 수포자 3은 모든 문제를 틀렸습니다.
따라서 가장 문제를 많이 맞힌 사람은 수포자 1입니다.
입출력 예 #2
- 모든 사람이 2문제씩을 맞췄습니다.
[간단설명]
수포자 3명중 정답을 가장 많이 맞춘 사람을 리턴하는 문제
[접근방법]
1. 수포자 1, 2, 3 의 답안 배열을 만든다.
2. 각각 정답 개수를 기록한다.
3. 정답 개수 MAX를 구한다.
4. 정답 개수 MAX인 수포자를 리스트에 추가한다.
5. 수포자 리스트를 배열로 리턴한다.
[주의사항]
- 수포자 1, 2, 3의 답안 배열을 만들고, 정답 개수만큼 for문을 어떻게 돌지 고민이 필요하다.
- 여기서는 나머지(%) 를 수포자 배열의 index로 사용
[소스공개]
import java.util.*;
class Solution {
public int[] solution(int[] answers) {
// 수포자 1,2,3 정답 배열 만들기
int[] one = new int[]{1,2,3,4,5};
int[] two = new int[]{2,1,2,3,2,4,2,5};
int[] three = new int[]{3,3,1,1,2,2,4,4,5,5};
// 정답 개수 카운트 배열(0은 버림)
int[] cnt = new int[4];
// 리턴용 List -> 제출할 때 array로 만들 예정
List<Integer> list = new ArrayList<>();
// 수포자 1,2,3의 정답 개수를 카운트
for(int i=0;i<answers.length;i++){
if(answers[i]==one[i%one.length]){
cnt[1]+=1;
}
if(answers[i]==two[i%two.length]){
cnt[2]+=1;
}
if(answers[i]==three[i%three.length]){
cnt[3]+=1;
}
}
// 정답개수 맥스값 찾음
int max = 0;
for(int i=1;i<cnt.length;i++){
max = Math.max(max,cnt[i]);
}
// 맥스값과 일치하는 경우, 수포자 순서대로 리스트에 추가
for(int i=1;i<cnt.length;i++){
if(max==cnt[i]) list.add(i);
}
// 리스트를 배열로 리턴
return list.stream().mapToInt(Integer::intValue).toArray();
}
}
[실행결과]
'코딩 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/JAVA] 고득점Kit > 완전탐색 > 카펫 (by 다알쥐AI) (0) | 2024.09.12 |
---|---|
[프로그래머스/JAVA] 고득점Kit > 완전탐색 > 소수 찾기 (by 다알쥐AI) (0) | 2024.09.11 |
[프로그래머스/JAVA] 고득점Kit > 완전탐색 > 최소직사각형 (by 다알쥐AI) (0) | 2024.09.09 |
[프로그래머스/JAVA] 고득점Kit > 이분탐색 > 입국심사 (by 다알쥐AI) (2) | 2024.09.09 |
[프로그래머스/JAVA] 고득점Kit > 깊이/너비 우선 탐색 > 여행경로 (by 다알쥐AI) (8) | 2024.09.08 |