1. 임시반장 정하기
김갑동 선생님은 올해 6학년 1반 담임을 맡게 되었다.
김갑동 선생님은 우선 임시로 반장을 정하고 학생들이 서로 친숙해진 후에 정식으로 선거를 통해 반장을 선출하려고 한다.
그는 자기반 학생 중에서 1학년부터 5학년까지 지내오면서 한번이라도 같은 반이었던 사람이 가장 많은 학생을 임시 반장으로 정하려 한다.
그래서 김갑동 선생님은 각 학생들이 1학년부터 5학년까지 몇 반에 속했었는지를 나타내는 표를 만들었다.
예를 들어 학생 수가 5명일 때의 표를 살펴보자.
위 경우에 4번 학생을 보면 3번 학생과 2학년 때 같은 반이었고, 3번 학생 및 5번 학생과 3학년 때 같은 반이었으며,
2번 학생과는 4학년 때 같은 반이었음을 알 수 있다. 그러므로 이 학급에서 4번 학생과 한번이라도
같은 반이었던 사람은 2번 학생, 3번 학생과 5번 학생으로 모두 3명이다.
이 예에서 4번 학생이 전체 학생 중에서 같은 반이었던 학생 수가 제일 많으므로 임시 반장이 된다.
각 학생들이 1학년부터 5학년까지 속했던 반이 주어질 때, 임시 반장을 정하는 프로그램을 작성하시오.
이해하기 쉽게 for문을 1부터 시작했다
1. 처음 Scanner에서 1부터 담아준다.
2. i번 학생과 j번 학생의 k학년 에 같은 반인지 확인되면 count 해준다.
3. count값과 max값을 비교하여 max를 계속 갱신해준다.
4. max 가 제일 높은 i번째 학생이 임시반장이 된다.
import java.util.Scanner;
public class Test2_11 {
public int solution(int number, int[][] numberArray) {
int result = 0;
int max = 0;
for (int i = 1; i <=number; i++) {
int count = 0;
for (int j = 1; j <= number; j++) {
for (int k = 1; k <= 5; k++) {
if (numberArray[i][k] == numberArray[j][k]) {
count++;
break;
}
}
}
if (max < count) {
max = count;
result = i;
}
}
return result;
}
public static void main(String[] args) {
Test2_11 main = new Test2_11();
Scanner sc = new Scanner(System.in);
int number = sc.nextInt();
int[][] array = new int[number + 1][6];
for (int i = 1; i <= number; i++) {
for (int j = 1; j <= 5; j++) {
array[i][j] = sc.nextInt();
}
}
System.out.println(main.solution(number, array));
}
}
반응형
'알고리즘' 카테고리의 다른 글
11월 22일 1문제 - Java : Array (0) | 2021.11.22 |
---|---|
[프로그래머스 Lv.1] 로또의 최고 순위와 최저 순위 (0) | 2021.11.14 |
11월 3일 1문제 - Java : Array (0) | 2021.11.03 |
10월 29일 1문제 - Java : Array (0) | 2021.10.29 |
10월 21일 4문제 - Java : Array (0) | 2021.10.25 |