본문 바로가기

알고리즘

Class President

import java.util.Scanner;
import java.util.Arrays;

public class Main{
    
    // [이해]
    // 한번이라도 같은 반이었던 사람이 많은 사람을 반장으로 선출
    // ex> 1번 학생, 2번 학생이랑 1,2,3,4,5 학년 같은 반 vs 
    // 3번학생,  4번이랑 4학년때 같은 반, 5번이랑 5학년 때 같은 반 (이러면 3번 학생 회장)
    
    // [입력]
    // n명 학생 (arr[n][6])
    // 1~5학년때까지 몇 반이었는지 입력 (arr[1][1] arr[1][2]...arr[1][5],arr[2][1]...arr[2][5]...arr[n][1]...arr[n][5])
    
    // [설계]
    // for(i=1~N번 학생)
    //    for(j=1~5 학년 때)
    //      for(k=1~N번 학생중)
    //        student[i][j](i번 학생, j 학년) = student[k][j] (k번 학생,j 학년)학생이랑 반이 같으면
    //            check[i][k] i번 학생이랑 같은 학년이었다.(1)표시
    //        (예외) i==k인 경우는 건너뛴다.
    
    //  score[N+1] 배열(점수 기록)을 만든다.
    //  
    //  for(i=1~N번 학생)
    //      for(j=1~N번 학생)
    //  
    //  학생의 점수를 score[i]에 갱신시켜준다
    //  i가 가장 높은 것을 출력한다.
    public static int n;
    public static int[][] student = new int[1020][6];
    public static int[][] check = new int[1020][1020];
    public static int[] score=new int[1020];
    public static void main(String[] args){
      Scanner scan = new Scanner(System.in);
      n = scan.nextInt();
      inputMap(scan);
      // printMap();
      for(int i=1;i<=n;i++)
      {
        for(int j=1;j<=5;j++)
        {
          for(int k=1;k<=n;k++)
          {
            if(i==k)continue;
            
            if(student[i][j]==student[k][j])check[i][k]=1;
          }
        }
      }
      for(int i=1;i<=n;i++)
      {
        int sum=0;
        for(int j=1;j<=n;j++)
        {
          if(check[i][j]==1)sum+=1;
        }
        score[i]=sum;
      }
      
      int max=0;int maxIdx=0;
      for(int i=1;i<=n;i++)
      {
        // System.out.print(score[i]+" ");
        if(max<score[i]){max=score[i];maxIdx=i;}
      }
      // System.out.println();
      System.out.println(maxIdx);
      
            
      scan.close();
    }
    
    public static void printMap()
    {
      for(int i=1;i<=n;i++)
      {
        for(int j=1;j<=5;j++)
        {
          System.out.print(student[i][j]+" ");
        }System.out.println();
      }
    }
    
    public static void inputMap(Scanner scan)
    {
      for(int i=1;i<=n;i++)
      {
        for(int j=1;j<=5;j++)
        {
          student[i][j]=scan.nextInt();
        }
      }
    }
}

'알고리즘' 카테고리의 다른 글

상자색 칠하기  (0) 2019.08.01
inequal  (0) 2019.08.01
Seat  (0) 2019.08.01
Offset  (0) 2019.08.01
상자색칠  (0) 2019.04.16