문제 : https://www.acmicpc.net/problem/10570

 

10570번: Favorite Number

각 테스트마다 쪽지에서 가장 많이 선택된 수를 출력하시오.  ( 단 , 가장 많이 선택된 수가 여러개라면 그 중 가장 작은 수를 출력하라 )

www.acmicpc.net

문제 요약 : 가장 많이 선택된 수 출력

입력 출력
1 ≤ N(테스트 수) ≤ 100
1 ≤ V(쪽지 개수) ≤ 1000
1 ≤ S(적힌 수) ≤ 1000

가장 많이 선택된 수 출력
(여러개 일 경우 그 중 가장 작은 수 출력)

JAVA

소스코드 : https://github.com/cbkpar/BOJ/blob/main/boj_10570.java

채점 번호 아이디 문제 번호 결과 메모리 시간 언어 코드 길이
30899061 cbkpar 10570 맞았습니다!! 20664KB 240ms Java 11 634B
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
	
	public static void main(String args[]) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();
		int t,n,m,s,i;
		t = Integer.parseInt(br.readLine());
		while(t-->0) {
			n = Integer.parseInt(br.readLine());
			int[] arr = new int[1001];
			while(n-->0) arr[Integer.parseInt(br.readLine())]++;
			s = m = 0;
			for(i=1;i<1001;i++) if(arr[i]>m) {
				m = arr[i];
				s = i;
			}
			sb.append(s+"\n");
		}
		System.out.println(sb);
	}
}

해당 쪽지에 적힌 수가 1000으로 매우 작은 수 이므로

배열을 이용해 쪽지에 적힌 숫자의 번호에 해당하는 배열의 값을 1씩 증가시켜준다.

이 과정을 마치고 해당 배열의 최댓값을 가지는 번호를 출력한다.

+ Recent posts