[코딩테스트] 모의고사

시나브로·2021년 6월 22일
0

코딩테스트

목록 보기
14/34
post-thumbnail

문제


모의고사 문제 바로가기



제출 코드(JAVA)


첫번째 코드 제출

import java.util.*;

   public int[] solution(int[] answers) {
        Map<Integer, Integer> ansMap = new HashMap<>();
        List<Integer> answer = new LinkedList<>();
        int[] answer1 = {1, 2, 3, 4, 5};
        int[] answer2 = {2, 1, 2, 3, 2, 4, 2, 5};
        int[] answer3 = {3, 3, 1, 1, 2, 2, 4, 4, 5, 5};


        for (int i = 0; i < answers.length; i++) {
            if (answer1[i%5] == answers[i]) { ansMap.put(1, ansMap.getOrDefault(1, 0)+1); }
            if (answer2[i%8] == answers[i]) { ansMap.put(2, ansMap.getOrDefault(2, 0)+1); }
            if (answer3[i%10] == answers[i]) { ansMap.put(3, ansMap.getOrDefault(3, 0)+1); }
        }

        if (ansMap.size() > 0) {
            int max = 0;
            for(Map.Entry<Integer, Integer> entry : ansMap.entrySet()) {
                if (max < entry.getValue()) {
                    max = entry.getValue();
                    answer.clear();
                    answer.add(entry.getKey());
                } else if (max == entry.getValue()){
                    answer.add(entry.getKey());
                }
            }
            answer.sort((o1, o2) -> o1.compareTo(o2));
        }
        return answer.stream().mapToInt(i->i).toArray();
    }

Map을 사용하여 사용자와 정답을 저장한 후, 최대값을 통해 배열로 풀어냈다


정확성 테스트

정확성  테스트
테스트 1 〉	통과 (2.94ms, 52.6MB)
테스트 2 〉	통과 (3.35ms, 52.9MB)
테스트 3 〉	통과 (4.34ms, 52.5MB)
테스트 4 〉	통과 (3.48ms, 52.7MB)
테스트 5 〉	통과 (4.52ms, 51.9MB)
테스트 6 〉	통과 (3.34ms, 52.3MB)
테스트 7 〉	통과 (9.55ms, 53.3MB)
테스트 8 〉	통과 (12.96ms, 52.8MB)
테스트 9 〉	통과 (8.72ms, 54MB)
테스트 10 〉	통과 (7.52ms, 52.9MB)
테스트 11 〉	통과 (7.91ms, 53MB)
테스트 12 〉	통과 (7.45ms, 53.4MB)
테스트 13 〉	통과 (3.55ms, 52.8MB)
테스트 14 〉	통과 (6.58ms, 53.6MB)




일단 JCF에 대한 의존이 심해 탐색관련하여 소요시간이 높게 나온 것 같다.



두번째 코드 제출

import java.util.*;

      public static int[] solution(int[] answers) {
       int[] answer1 = {1, 2, 3, 4, 5};
        int[] answer2 = {2, 1, 2, 3, 2, 4, 2, 5};
        int[] answer3 = {3, 3, 1, 1, 2, 2, 4, 4, 5, 5};

        int result1 = 0;
        int result2 = 0;
        int result3 = 0;
        for(int i = 0; i < answers.length; i++) {
            if (answer1[i%5] == answers[i]) { result1++; }
            if (answer2[i%8] == answers[i]) { result2++; }
            if (answer3[i%10] == answers[i]) { result3++; }
        }

        int max = Math.max(result1, Math.max(result2, result3));
        List<Integer> list = new ArrayList<>();
        if (max == result1) {list.add(1);}
        if (max == result2) {list.add(2);}
        if (max == result3) {list.add(3);}

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

최대한 상수배열을 사용하여 다시 풀어낸 답변


정확성 테스트

정확성  테스트
테스트 1 〉	통과 (0.05ms, 52.8MB)
테스트 2 〉	통과 (0.05ms, 52.5MB)
테스트 3 〉	통과 (0.07ms, 54MB)
테스트 4 〉	통과 (0.05ms, 53MB)
테스트 5 〉	통과 (0.05ms, 51.7MB)
테스트 6 〉	통과 (0.06ms, 52.3MB)
테스트 7 〉	통과 (0.47ms, 52.4MB)
테스트 8 〉	통과 (0.14ms, 52.5MB)
테스트 9 〉	통과 (0.84ms, 53.3MB)
테스트 10 〉	통과 (0.27ms, 52.4MB)
테스트 11 〉	통과 (0.93ms, 53.6MB)
테스트 12 〉	통과 (0.78ms, 53.3MB)
테스트 13 〉	통과 (0.11ms, 52.2MB)
테스트 14 〉	통과 (0.92ms, 53.6MB)




소요시간이 매우 단축된 것을 확인할 수 있다



제출 코드(Python)


코드 제출

def solution(answers):
    answer = []
    answer1 = [1, 2, 3, 4, 5]
    answer2 = [2, 1, 2, 3, 2, 4, 2, 5]
    answer3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
    result1 = 0
    result2 = 0
    result3 = 0

    for i in range(0, len(answers), 1):
        if answer1[i % 5] == answers[i]: result1 += 1
        if answer2[i % 8] == answers[i]: result2 += 1
        if answer3[i % 10] == answers[i]: result3 += 1

    maxValue = max(result1, result2, result3)

    if maxValue == result1: answer.append(1)
    if maxValue == result2: answer.append(2)
    if maxValue == result3: answer.append(3)

    answer.sort()

    return answer

배열을 사용하여 간단히 풀어낸 답변


정확성 테스트

정확성  테스트
테스트 1 〉	통과 (0.01ms, 10.3MB)
테스트 2 〉	통과 (0.01ms, 10.4MB)
테스트 3 〉	통과 (0.01ms, 10.3MB)
테스트 4 〉	통과 (0.01ms, 10.3MB)
테스트 5 〉	통과 (0.03ms, 10.2MB)
테스트 6 〉	통과 (0.03ms, 10.3MB)
테스트 7 〉	통과 (1.59ms, 10.2MB)
테스트 8 〉	통과 (0.76ms, 10.3MB)
테스트 9 〉	통과 (4.20ms, 10.3MB)
테스트 10 〉	통과 (1.39ms, 10.3MB)
테스트 11 〉	통과 (2.62ms, 10.4MB)
테스트 12 〉	통과 (2.39ms, 10.3MB)
테스트 13 〉	통과 (0.20ms, 10.3MB)
테스트 14 〉	통과 (2.65ms, 10.3MB)




profile
Be More!

0개의 댓글