개발자는 기록이 답이다

[프로그래머스][Java][Lv.1] 모의고사 본문

알고리즘/프로그래머스

[프로그래머스][Java][Lv.1] 모의고사

slow-walker 2023. 10. 4. 13:04

 

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

 

프로그래머스

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

programmers.co.kr

 

import java.util.*;

public class Solution {
    public int[] solution(int[] answers) {
        int[] first = {1,2,3,4,5}; // 5개씩 반복
        int[] second = {2,1,2,3,2,4,2,5}; // 8개씩 반복
        int[] third = {3,3,1,1,2,2,4,4,5,5}; // 10개씩 반복
        int answer1=0, answer2 =0, answer3 =0;

        // 수포자들의 점수 계산
        for(int i=0; i<answers.length; i++) {
            if(answers[i] == first[i%5]) answer1++;
            if(answers[i] == second[i%8]) answer2++;
            if(answers[i] == third[i%10]) answer3++;

        }

        // 최대 점수 구하기
        int max = Math.max(answer1, Math.max(answer2, answer3));

        // 최대 점수를 가진 수포자 리스트 생성
        ArrayList<Integer> list = new ArrayList<Integer>();
        if(max==answer1) list.add(1); //max값이랑 같으면 넣는다.
        if(max==answer2) list.add(2);
        if(max==answer3) list.add(3);


        int[] answer = new int[list.size()];
        for(int i=0; i<list.size(); i++){
            answer[i] = list.get(i);
        }

        return answer;
    }
}
테스트 1 통과 (0.04ms, 75.7MB)
테스트 2 통과 (0.04ms, 71.3MB)
테스트 3 통과 (0.04ms, 76.5MB)
테스트 4 통과 (0.03ms, 73.1MB)
테스트 5 통과 (0.04ms, 73.6MB)
테스트 6 통과 (0.07ms, 76.6MB)
테스트 7 통과 (0.29ms, 75.9MB)
테스트 8 통과 (0.12ms, 80.3MB)
테스트 9 통과 (0.77ms, 71.4MB)
테스트 10 통과 (0.25ms, 75.1MB)
테스트 11 통과 (0.92ms, 79.6MB)
테스트 12 통과 (0.80ms, 76.9MB)
테스트 13 통과 (0.07ms, 76.3MB)
테스트 14 통과 (0.51ms, 74.4MB)

 

완전 탐색 의미 

완전 탐색(Exhaustive Search) 알고리즘의 한 예입니다. 완전 탐색은 가능한 모든 경우를 나열하고 검사하여 원하는 결과를 찾는 방법 중 하나입니다. 이 경우, 세 명의 수포자가 찍는 방식을 나열하고, 실제 답과 비교하여 각 수포자의 점수를 계산하는 것이 완전 탐색의 일부입니다.

 

완전 탐색은 모든 가능한 조합 또는 경우를 확인하고 정확한 답을 찾을 때 사용됩니다. 이것은 때로는 시간 복잡도가 높을 수 있으며, 다른 효율적인 알고리즘보다 느릴 수 있습니다. 하지만 간단한 문제나 작은 입력 크기에서는 완전 탐색이 효과적일 수 있습니다.