코린이의 소소한 공부노트

[프로그래머스/Lv.1] 모의고사 본문

코딩테스트 풀이/JAVA

[프로그래머스/Lv.1] 모의고사

무지맘 2022. 11. 22. 00:06

1. Input

1) 1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers

2) 수포자는 3명이 있다.

3) 수포자들이 번호를 찍은 방식

1번 수포자: 1, 2, 3, 4, 5 반복

2번 수포자: 2, 1, 2, 3, 2, 4, 2, 5 반복

3번 수포자: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5 반복

 

2. Output

1) 세 명 중 가장 많은 문제를 맞힌 사람의 번호를 담은 정수 배열

 

3. Constraint

1) 시험은 최대 10,000 문제

2) 문제의 정답은 1, 2, 3, 4, 5중 하나

3) 가장 높은 점수를 받은 사람이 여럿일 경우, 반환하는 값을 오름차순으로 정렬 후 반환

 

4. Example

Input: answers={1,3,2,4,2} -> Output: {1,2,3}

설명: 모든 사람이 2문제씩 맞췄다.

 

5. Code

1) 첫 코드(2022/??)

int[] who;
int c1=0, c2=0, c3=0; // 맞은 개수

int[] a1 = {1,2,3,4,5};
int[] a2 = {2,1,2,3,2,4,2,5};
int[] a3 = {3,3,1,1,2,2,4,4,5,5};

for(int i=0 ; i<answers.length ; i++) {
    if(answers[i] == a1[i%5]) c1++;
    if(answers[i] == a2[i%8]) c2++;
    if(answers[i] == a3[i%10]) c3++;
}
		
if(c1>c2) {
    if(c1>c3) who = new int[] {1};
    else if(c1==c3) who = new int[] {1,3};
    else who = new int[] {3};
}
else if(c1==c2) {
    if(c1>c3) who = new int[] {1,2};
    else if(c1==c3) who = new int[] {1,2,3};
    else who = new int[] {3};
}
else {
    if(c2>c3) who = new int[] {2};
    else if(c2==c3) who = new int[] {2,3};
    else who = new int[] {3};
}
return who;