본문 바로가기
알고리즘

[프로그래머스] 모의고사 - java

by 육빔 2024. 8. 3.
728x90
반응형

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

 

프로그래머스

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

programmers.co.kr

 

문제해석

 

내가 예전 코테에서 못풀었던 비슷한 유형

못풀었던 이유는 저 많이나온 값을 카운트 하는 것 까지는 생각했는데 그 값을 저장하고 다시 for문으로 탐색하여 다시 배열에 넣는 로직을 못했기 때문이었다. 이 문제를 풀게되서 기쁘다

 

 

문제풀이

 

ArrayList와 배열의 스트림 사용법이 다르다.

List계열일 경우 arr.stream() 이런식이지만 배열은 Arrays.stream(arr)로 List계열로 변환한 뒤 작업해준다.

import java.util.*;
class Solution {
    public int[] solution(int[] answers) {
        int [][]arr = {{1,2,3,4,5}, {2,1,2,3,2,4,2,5}, {3,3,1,1,2,2,4,4,5,5}};
        
        int []people = new int[3];
        
        for(int i=0; i<answers.length; i++){
            for(int j=0; j<arr.length; j++){
                if(answers[i] == arr[j][i % arr[j].length]){
                    people[j]++;
                }
            }
        }
        ArrayList<Integer> answer = new ArrayList<>();
        
        int maxScore = Arrays.stream(people).max().getAsInt();
        
        for(int k=0; k<people.length; k++){
            if(people[k] == maxScore){
                answer.add(k + 1);
                
            }
        }
        return answer.stream().mapToInt(Integer::intValue).toArray();
    }
}

 

728x90
반응형