Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

시간이 NullNull

[JAVA] [SWEA] 6913. 동철이의 프로그래밍 대회 본문

알고리즘

[JAVA] [SWEA] 6913. 동철이의 프로그래밍 대회

4NIng 2019. 5. 9. 23:56

N명의 사람들이 어떤 프로그래밍 대회에 참가했다.

대회에는 M개의 문제가 나왔다.

동철이는 이 프로그래밍 대회가 열렸다는 소식을 접했고,

간단한 웹 서핑으로 각 사람들이 문제를 풀었는지 아닌지를 나타내는 NⅹM 개의 값 ai,j를 구할 수 있었다.

사람에 1에서 N까지의 번호를 붙이고, 문제에도 1에서 M까지의 번호를 붙일 때,

ai,j 는 대회가 끝나고 i번 사람이 j번 문제를 풀었다면 1, 풀지 못했다면 0을 가지는 값이다.

동철이는 이 대회에는 나가지 못했지만, 다른 프로그래밍 대회에 나갈 계획이고 목표는 우승이다.

그러므로 지금 열린 이 대회에서 1등을 한 사람들을 찾아 라이벌로 삼기로 했다.

이 대회에서 모든 문제의 점수는 같고 프로그램을 제출한 시간은 따지지 않는다.

그러므로, 푼 문제 수가 많은 사람이 더 높은 등수를 가지고, 푼 문제 수가 같은 사람은 같은 등수를 가진다.

이 대회의 결과를 받아 1등을 한 사람이 몇 명이고 몇 문제를 풀었는지 구하는 프로그램을 작성하라.

 

이 문제의 경우 체감상 D3 보다 난이도가 더 낮았다.

 

1등을 구하는데 여러명일 경우 몇명인 지만 체크하면 된다.

 

처음 푼 문제수를 0 1등의 인원수를 0으로 잡고

 

N 명의 사람을 체크하면서 1등이 갱신될 경우 0, 1등과 푼 문제가 같을 경우 인원수를 1증가시키기만 하면된다.

 

코드는 다음과 같다.

 

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class Solution {

	public static void main(String[] args) throws Exception{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		int T = Integer.parseInt(br.readLine());
		int N = 0;
		int M = 0;
		int cnt = 0;
		int maxCnt = 0;
		int pMax = 0;
		String[] s = null;
		for(int t=1; t<=T; t++) {
			s = br.readLine().split(" ");
			N = Integer.parseInt(s[0]);
			M = Integer.parseInt(s[1]);
			maxCnt = 0;
			pMax = 0;
			for(int i=0; i<N; i++) {
				s = br.readLine().split(" ");
				cnt = 0;
				for(int j=0; j<M; j++) {
					if(s[j].equals("1")) {
						cnt++;
					}
				}
				if(cnt > maxCnt) {
					maxCnt = cnt;
					pMax = 1;
				}else if(cnt == maxCnt) {
					pMax++;
				}
			}
			bw.write("#"+t+" "+pMax+" "+maxCnt+"\n");
		}
		br.close();
		bw.close();
	}
}
Comments