Skip to content

Commit e445280

Browse files
committed
[level 1] Title: 모의고사, Time: 2.40 ms, Memory: 89.1 MB -BaekjoonHub
1 parent 35c8fcb commit e445280

File tree

2 files changed

+65
-23
lines changed

2 files changed

+65
-23
lines changed

프로그래머스/1/42840. 모의고사/README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
# [level 1] 모의고사 - 42840
22

3-
[문제 링크](https://school.programmers.co.kr/learn/courses/30/lessons/42840)
3+
[문제 링크](https://school.programmers.co.kr/learn/courses/30/lessons/42840?language=java)
44

55
### 성능 요약
66

7-
메모리: 77.7 MB, 시간: 7.87 ms
7+
메모리: 89.1 MB, 시간: 2.40 ms
88

99
### 구분
1010

@@ -16,7 +16,7 @@
1616

1717
### 제출 일자
1818

19-
2025년 03월 25일 13:56:27
19+
2026년 02월 15일 16:11:14
2020

2121
### 문제 설명
2222

Lines changed: 62 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,75 @@
1+
import java.util.List;
12
import java.util.ArrayList;
23

34
class Solution {
5+
6+
static class Student {
7+
int number;
8+
int[] pattern;
9+
int answerCount;
10+
11+
public Student(int number, int[] pattern) {
12+
this.number = number;
13+
this.pattern = pattern;
14+
}
15+
16+
public int getStudentNumber() {
17+
return number;
18+
}
19+
20+
public int[] getPattern() {
21+
return pattern;
22+
}
23+
24+
public int getPatternLength() {
25+
return pattern.length;
26+
}
27+
28+
public int getAnswerCount() {
29+
return answerCount;
30+
}
31+
}
32+
433
public int[] solution(int[] answers) {
5-
int[][] patterns = {
6-
{1, 2, 3, 4, 5},
7-
{2, 1, 2, 3, 2, 4, 2, 5},
8-
{3, 3, 1, 1, 2, 2, 4, 4, 5, 5}
9-
};
10-
11-
int[] score = new int[patterns.length];
12-
13-
for(int i = 0; i < answers.length; i++) {
14-
for(int j = 0; j < patterns.length; j++) {
15-
int user_answer = patterns[j][i % patterns[j].length];
16-
if(answers[i] == user_answer) {
17-
score[j]++;
18-
}
34+
Student student1 = new Student(1, new int[]{1, 2, 3, 4, 5});
35+
Student student2 = new Student(2, new int[]{2, 1, 2, 3, 2, 4, 2, 5});
36+
Student student3 = new Student(3, new int[]{3, 3, 1, 1, 2, 2, 4, 4, 5, 5});
37+
38+
for (int i = 0; i < answers.length; i++) {
39+
if (student1.getPattern()[i % student1.getPatternLength()] == answers[i]) {
40+
student1.answerCount++;
41+
}
42+
43+
if (student2.getPattern()[i % student2.getPatternLength()] == answers[i]) {
44+
student2.answerCount++;
45+
}
46+
47+
if (student3.getPattern()[i % student3.getPatternLength()] == answers[i]) {
48+
student3.answerCount++;
1949
}
2050
}
2151

22-
int maxScore = Math.max(score[0], Math.max(score[1], score[2]));
52+
Student[] students = {student1, student2, student3};
53+
List<Integer> result = new ArrayList<>();
54+
int max = 0;
2355

24-
ArrayList<Integer> correctList = new ArrayList<>();
25-
for (int i = 0; i < score.length; i++) {
26-
if (score[i] == maxScore) {
27-
correctList.add(i + 1);
56+
for (Student student : students) {
57+
if (student.answerCount > max) {
58+
max = student.answerCount;
2859
}
2960
}
3061

31-
return correctList.stream().mapToInt(Integer::intValue).toArray();
62+
for (Student student : students) {
63+
if (max == student.answerCount) {
64+
result.add(student.number);
65+
}
66+
}
67+
68+
int[] winners = new int[result.size()];
69+
for (int i = 0; i < result.size(); i++) {
70+
winners[i] = result.get(i);
71+
}
72+
73+
return winners;
3274
}
3375
}

0 commit comments

Comments
 (0)