public class INF0211 {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[][] grid = new int[n+1][6];
for(int i=1; i<=n; i++){
for(int j=1; j<=5; j++){
grid[i][j] = sc.nextInt();
}
}
INF0211 inf = new INF0211();
System.out.print(inf.solution(n, grid));
}
public int solution(int n, int[][] grid){
int answer=0, max=0;
for(int i=1; i<=n; i++){
int cnt = 0;
for(int j=1; j<=n; j++){
for(int k=1; k<=5; k++){
if(grid[i][k] == grid[j][k]){
cnt++;
break;
}
}
}
if(cnt > max){
max = cnt;
answer = i;
}
}
return answer;
}
}
풀이
for(int i=1; i<=n; i++){ //1
int cnt = 0;
for(int j=1; j<=n; j++){ //2
for(int k=1; k<=5; k++){ //3
if(grid[i][k] == grid[j][k]){ //4
cnt++;
break;
}
}
}
if(cnt > max){ //5
max = cnt;
answer = i;
}
}
학생 1부터 루프 돌면서 나머지 학생의 반과 본인의 반이 같은지 비교하는 방법이다.
`cnt` - 같은 반인 학생 수
`max` - 같은 반인 학생 수의 최대
`answer` - 학생 번호
- 학생 1부터 본인 반과 나머지 학생들의 반을 비교하기 위함
- 나머지 학생을 비교하기 위함
- 1학년부터 5학년까지 루프를 돌기 위함
- 나와 다른 학생의 반이 같다면 카운트 증가
- 현재 학생의 cnt가 max보다 크다면 1등으로 값 세팅
인프런 - 자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비 강의에 나오는 알고리즘 문제입니다.
'💡 Algorithm > 인프런' 카테고리의 다른 글
[Java] 멘토링 - Array(1, 2차원 배열) (0) | 2024.11.14 |
---|---|
[Java] 두 배열 합치기 - Two-Pointers Algorithm (0) | 2023.10.28 |
[Java] 등수구하기 - Array(1, 2차원 배열) (0) | 2023.10.24 |
[JAVA] 봉우리 - Array(1, 2차원 배열) (0) | 2023.10.22 |
[Java] 특정 문자 뒤집기 - String(문자열) (0) | 2023.10.21 |
[JAVA] 단어 뒤집기 - String(문자열) (0) | 2023.10.20 |