Array(1, 2차원 배열) - 0211. 임시 반장 정하기
private static int solution(int n, String[][] strArr) {
int answer = 1, max = 0;
int [] dupClassSum = new int[n];
for(int i=0; i<n; i++) {
for(int j=0; j<n; j++) {
dupClassSum[i] += dupClassCheck(strArr[i], strArr[j]);
}
if(max < dupClassSum[i]) {
answer = i + 1;
max = dupClassSum[i];
}
}
return answer;
}
private static int dupClassCheck(String[] str1, String[] str2) {
for(int i=0; i<5; i++) {
if(str1[i].equals(str2[i])) return 1;
}
return 0;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = Integer.parseInt(sc.nextLine());
String[][] strArr = new String[n][];
for(int i=0; i<n; i++) {
strArr[i] = sc.nextLine().split(" ");
}
System.out.println(solution(n ,strArr));
}
public int solution(int n, int[][] arr){
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(arr[i][k]==arr[j][k]){
cnt++;
break;
}
}
}
if(cnt>max){
max=cnt;
answer=i;
}
}
return answer;
}
public static void main(String[] args){
Main T = new Main();
Scanner kb = new Scanner(System.in);
int n=kb.nextInt();
int[][] arr=new int[n+1][6];
for(int i=1; i<=n; i++){
for(int j=1; j<=5; j++){
arr[i][j]=kb.nextInt();
}
}
System.out.print(T.solution(n, arr));
}
해당 문제는 n번
학생과 나머지
학생이 같은 반이 될 수 있는 모든 경우의 수를 순회하는 문제이다.
2중 for문
을 통해 번의 연산을 수행하며, 각 연산에서 한번 더 1학년 ~ 5학년
사이에
같은 반이 된 경우를 찾는다. 이 떄 비교연산은 최대 25번을 넘지 않게된다.
순회하며 비교하는 것 외에 특별한 로직은 없다. 본인은 문제를 제대로 읽지 않아, 연이은 오답 처리에
의아해 하며 무려 한 시간 동안 삽질을 했다. 무슨 일이든 정확한 요구 사항 파악이 중요한 것 같다.