알고리즘/알고리즘 풀이

[프로그래머스_1] 모의고사 JAVA

데부한 2023. 4. 1. 18:52
반응형

 

프로그래머스

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

programmers.co.kr

 

CODE

import java.util.*;

class Solution {
    public List solution(int[] answers) {
       
        List<Integer> answer = new ArrayList<>();
        int[] score = {0, 0, 0};
        int[][] supoja = {
            {1, 2, 3, 4, 5},
            {2, 1, 2, 3, 2, 4, 2, 5},
            {3, 3, 1, 1, 2, 2, 4, 4, 5, 5}
        };
        
        int idx_1 = 0, idx_2 = 0, idx_3 = 0;
        
        int len_1 = supoja[0].length;
        int len_2 = supoja[1].length;
        int len_3 = supoja[2].length;
        
        
        for(int i = 0; i < answers.length; i++) {
            if(answers[i] == supoja[0][i % len_1]) score[0]++;
            if(answers[i] == supoja[1][i % len_2]) score[1]++;
            if(answers[i] == supoja[2][i % len_3]) score[2]++;
        }
        
        int max = Arrays.stream(score).max().getAsInt();
        
        for(int i = 0; i < score.length; i++) {
            if(max == score[i]) answer.add(i+1);
        }
        
        return answer;
    }
}

약간 어려울 수 있는 난이도의 문제라고 생각한다.일단 여태 풀었던 문제와 다르게 변수 선언을 많이해서 푸는 과정에서도 '잘 풀고 있는게 맞나'하는 생각이 계속 들었다. 일단 변수 선언을 가득하고나면 이중 for문도 아니고 for문 하나로 문제를 풀이할 수 있다. 그것 외엔 딱히 어려울 게 없는 문제..! 나와 내 코드를 믿는게 제일 어려운 문제였던거 같다;;

 

실행 결과

반응형