코테 230221

YUJIN LEE·2023년 2월 21일
0

코딩테스트

목록 보기
6/7

isDigit() 함수

명시된 char 값이 숫자인지 여부를 판단하여 true 또는 false 값으로 리턴

import java.util.ArrayList;
import java.util.List;


class Solution {
    public static int[] solution(int[] answers) {
        int[][] patterns = {
                {1, 2, 3, 4, 5},
                {2, 1, 2, 3, 2, 4, 2, 5},
                {3, 3, 1, 1, 2, 2, 4, 4, 5, 5}
        };

        // 1. Count correct count per person
        int[] hit = new int[3];
        for(int personIdx = 0; personIdx < hit.length; personIdx++)
            for(int probIdx = 0; probIdx < answers.length; probIdx++)
                if(patterns[personIdx][probIdx % patterns[personIdx].length] == answers[probIdx])
                    hit[personIdx]++;

        // 2. Find Max Count
        int max = Math.max(hit[0], Math.max(hit[1], hit[2]));

        // 3. Find Max Players
        List<Integer> list = new ArrayList<>();
        for(int i = 0; i < hit.length; i++)
            if(max == hit[i])
                list.add(i + 1);

        // 4. Make answer array
        int[] answer = new int[list.size()];
        int cnt = 0;
        for(int num : list)
            answer[cnt++] = num;
        return answer;
    }
}

모의고사

완전탐색 문제이다. 처음 겪어봐서 그런지 접근을 잘 못해서 다른 블로그를 보고 했다..
1번은 각 사람별 정답의 수를 확인하는 것이다.
personIdx 반복문을 돌면서 사람들 중 몇명이 맞았는지 체크.
probIdx 반복문을 생성, 조건문을 통해서

  • [probIdx % pattern[personIdx].length]
    -> 문제 번호순 정답 % 사람별 패턴 길이

(patterns[personIdx]probIdx % patterns[personIdx].length] == answers[probIdx] -> 문제랑 정답이랑 비교.
맞으면hit++;

max 함수를 통해 가장 많이 맞춘 사람 저장

List로 가장 많이 맞춘 사람 저장

answer라는 배열에 list 값 저장 후 출력!

출처 :https://coding-grandpa.tistory.com/80

0개의 댓글