보라코딩

프로그래머스 자바 :: 모의고사 (완전탐색) 본문

프로그래머스 (java)

프로그래머스 자바 :: 모의고사 (완전탐색)

new 보라 2023. 10. 3. 21:05

이건 푼게 아니라

책보고 아.. 이런식으로 푸는 구나

감탄한 문제...

쉬운 문제라는데...

익숙해지겠지!!

 

 

 

모의고사

 

 

 

 

풀이
import java.util.stream.IntStream;  

public class Coding {  

    public int[] main(int answers[]) {  

        int[] corrects = new int[3]; // 세 명의 사람이 맞춘 정답 수를 저장하는 배열  
        int max = 0; // 가장 많은 정답을 맞힌 사람의 정답 수  

        // 모든 문제에 대해서 반복  
        for (int problem = 0; problem < answers.length; problem++) {  
            int answer = answers[problem]; // 현재 문제의 정답  

            // 세 명의 사람 각각에 대해서 반복  
            for (int person = 0; person < 3; person++) {  
                int picked = getPicked(person, problem); // 각 사람이 선택한 답  

                // 선택한 답과 실제 정답이 일치하는 경우  
                if (answer == picked) {  
                    // 해당 사람의 정답 수를 증가시키고, 최대 정답 수를 업데이트  
                    if (++corrects[person] > max) {  
                        max = corrects[person];  
                    }  
                }  
            }  
        }  

        final int maxCorrects = max; // 최대 정답 수를 최종 값으로 고정  

     // 최대 정답 수를 가진 사람(들)의 인덱스를 찾아서 배열로 반환  

     // IntStream.range(0, 3)는 0부터 2까지의 정수 스트림을 생성합니다.  
     // 이는 세 명의 사람을 나타내는 인덱스 0, 1, 2를 나타냅니다.  
     return IntStream.range(0, 3)  
             // filter(i -> corrects[i] == maxCorrects)는 정답 수 배열(corrects)에서  
             // 최대 정답 수(maxCorrects)와 일치하는 사람의 인덱스를 필터링합니다.  
             .filter(i -> corrects[i] == maxCorrects)  
             // map(i -> i + 1)는 0부터 시작하는 인덱스를 1부터 시작하도록 변환합니다.  
             // 이렇게 변환하는 이유는 대부분의 프로그래밍 언어에서 인덱스가 0부터 시작하지만,  
             // 사용자에게 보여줄 때에는 1부터 시작하는 것이 자연스럽기 때문입니다.  
             .map(i -> i + 1)  
             // toArray() 메서드는 스트림 요소를 배열로 변환하여 반환합니다.  
             .toArray();  
    }  

    private int getPicked(int person, int problem) {  
        int[] rule = RULES[person]; // 각 사람에 대한 규칙 배열  
        int index = problem % rule.length; // 현재 문제에 대한 인덱스 계산  
        return rule[index]; // 해당 사람의 선택한 답 반환  
    }  

    // 각 사람이 문제를 푸는 규칙을 정의한 배열  
    private static final int[][] RULES = {  
            {1, 2, 3, 4, 5}, // 첫 번째 사람의 규칙  
            {2, 1, 2, 3, 2, 4, 2, 5}, // 두 번째 사람의 규칙  
            {3, 3, 1, 1, 2, 2, 4, 4, 5, 5} // 세 번째 사람의 규칙  
    };  

}

 

 

 

 

 

프로그래머스

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

programmers.co.kr