99클럽 코테 스터디 20일차 TIL : 완전탐색(프로그래머스 - 모의고사)
2024. 11. 16. 16:54ㆍAlgorithm/항해99(4기)



https://school.programmers.co.kr/learn/courses/30/lessons/42840
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
🔎 문제
수포자 3명
수학문제 찍는 방식
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, ...
누가 제일 많이 맞추는 지 반환 (같은 점수면 오름차순 정렬)
시험은 10000문제 최대
💡 풀이
- cnt: 각 사람들이 현재 찍은 값의 index 저장, 마지막까지 돌면 다시 처음부터 반복하기 위해 만듬
- score: 각 사람들이 이긴 횟수를 저장
- sa[i] : 각 사람들의 찍는 값(반복할 값을 배열에 저장)
import java.util.*;
class Solution {
public int[] solution(int[] answers) {
int cnt1 = 0;
int cnt2 = 0;
int cnt3 = 0;
int[] score = new int[3];
int[] sa1 = {1,2,3,4,5};
int[] sa2 = {2,1,2,3,2,4,2,5};
int[] sa3 = {3,3,1,1,2,2,4,4,5,5};
for(int ans : answers){
if(ans==sa1[cnt1++]) score[0]++;
if(ans==sa2[cnt2++]) score[1]++;
if(ans==sa3[cnt3++]) score[2]++;
if(cnt1>=sa1.length) cnt1=0;
if(cnt2>=sa2.length) cnt2=0;
if(cnt3>=sa3.length) cnt3=0;
}
// 최고 점수를 받은 사람 찾기
List<Integer> list = new ArrayList<>();
int maxScore = Math.max(score[0], Math.max(score[1], score[2]));
for (int i = 0; i < score.length; i++) {
if (score[i] == maxScore) {
list.add(i + 1);
}
}
// List<Integer>를 int[]로 변환
return list.stream().mapToInt(i -> i).toArray();
}
}


📌 오늘의 회고
list에서 배열로 변환하는 과정에서 list.toArray()를 처음에 사용했는데 오류가 발생했다.
알고보니 list는 Integer 값으로 제너릭 타입이고, 내가 반환해야하는 값은 int타입 배열이라 함수를 적용할 수는 없고
스트림을 이용하여 변환해줘야했다.

'Algorithm > 항해99(4기)' 카테고리의 다른 글
99클럽 코테 스터디 22일차 TIL : 완전탐색(프로그래머스 - 피로도) (0) | 2024.11.19 |
---|---|
99클럽 코테 스터디 21일차 TIL : 완전탐색(프로그래머스 - 카펫) (0) | 2024.11.18 |
99클럽 코테 스터디 17일차 TIL : 그리디 알고리즘(백준 31926번 밤양갱) (0) | 2024.11.13 |
99클럽 코테 스터디 16일차 TIL : 그리디 알고리즘(백준 2847번) (0) | 2024.11.12 |
99클럽 코테 스터디 15일차 TIL : 그리디 알고리즘(백준 13417번) (0) | 2024.11.11 |