[Programmers 42840] 모의고사

Updated:

문제

LV1 [Programmers 42840 - 모의고사]

문제 풀이 방법

수업시간에 풀이했던 문제여서 빠르게 풀 수 있었다. 파이썬으로 풀 때는 한 번에 쭉 풀었는데, 자바는 꽤 시간이 걸렸다..

  1. 각 학생의 찍는 방법을 배열로 선언한다.
  2. 각 학생의 맞은 문제 개수를 저장할 cnt 배열을 학생 수 만큼 선언한다.
  3. 매개변수로 주어진 answer 을 순회하면서 각 학생들의 답이 맞는지를 확인하여 cnt배열에 저장한다.
    이 때, 학생 배열은 반복되기 때문에 인덱스를 학생 수 만큼 나누어(나머지 연산을 사용)하여 비교한다.
  4. cnt 배열에서 가장 큰 값을 구한다.
  5. 가장 큰 값을 가지고 있는 학생의 번호를 answer 배열에 담아 반환한다.

풀이 코드

Python

def solution(answers):
    answer = []
    stu1=[1,2,3,4,5]
    stu2=[2,1,2,3,2,4,2,5]
    stu3=[3,3,1,1,2,2,4,4,5,5]
    cnt=[0]*3

    for i in range(len(answers)):
        if answers[i]==stu1[i%len(stu1)]:
            cnt[0]+=1
        if answers[i]==stu2[i%len(stu2)]:
            cnt[1]+=1
        if answers[i]==stu3[i%len(stu3)]:
            cnt[2]+=1

    max_cnt=max(cnt)
    for i in range(len(cnt)):
        if cnt[i]==max_cnt:
            answer.append(i+1)
    return answer

Java

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
class Solution {
    public int[] solution(int[] answers) {
        int[] answer = {};
        int[] stu1 = {1,2,3,4,5};
        int[] stu2 = {2,1,2,3,2,4,2,5};
        int[] stu3 = {3,3,1,1,2,2,4,4,5,5};
        int[] cnt = {0,0,0};

        for (int i = 0; i < answers.length; i++) {
            if (answers[i] == stu1[i % stu1.length]) {
                cnt[0] += 1;
            }
            if (answers[i] == stu2[i % stu2.length]) {
                cnt[1] += 1;
            }
            if (answers[i] == stu3[i % stu3.length]) {
                cnt[2] += 1;
            }
        }

        int max_cnt = (cnt[0]> cnt[1]) ? cnt[0] : cnt[1];
        max_cnt = (max_cnt> cnt[2]) ? max_cnt : cnt[2];

        List<Integer> arr = new ArrayList<>();
        for (int i = 0; i <3; i++) {
            if (cnt[i] == max_cnt)
                arr.add(i+1);
        }

        answer = new int[arr.size()];
        for (int i = 0 ; i < arr.size() ; i++)
            answer[i] = arr.get(i).intValue();
        return answer;
    }
}

댓글남기기