본문 바로가기
PS 문제 풀이/Baekjoon

[BOJ] 백준 2592 대표값

by 까망 하르방 2022. 1. 12.
반응형

Approach

출처https://www.acmicpc.net/problem/2592

 

10개의 숫자가 주어질 때, 평균값과 최빈값을 구하는 문제이다.

 

평균값 = [합계 / 개수]으로 구할 수 있다.

최빈값은 나타난 횟수를 비교해야 하는데,

입력으로 주어지는 10개 숫자가 10의 배수로 1000보다 작은 자연수 이다.

따라서 배열 크기 자체를 100 정도로 설정한다.

 

ex) arr[i] = 3;  숫자 (i * 10)가 3번 나타났다.

ex) 숫자 "30" 주어질 때, arr[3]++ 가 된다.

C++

#include <stdio.h>

int sum, val, max, mode;
int arr[100 + 2];

int main() 
{
	// freopen("input.txt", "r", stdin);
	
	for (int i = 0; i < 10; i++) 
	{
		scanf("%d", &val);
		sum += val;			// 합계
		arr[val / 10]++;	// 나타난 횟수
	}

	for (int i = 0; i < 100; i++) 
	{
		if (max < arr[i])
		{
			max = arr[i];
			mode = i * 10; // 원래 숫자
		}
			
	}
	printf("%d\n%d\n", sum / 10, mode);
}

 

Java

import java.util.Scanner;

public class Main {
	
	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		
		int[] arr = new int[10];
		int[] count = new int[10];
		int sum = 0;
		for (int i = 0; i < arr.length; i++) {
			arr[i] = sc.nextInt();
			sum = sum + arr[i];
		}
		for (int i = 0; i < arr.length; i++) {
			for (int j = 0; j < arr.length; j++) {
				if(arr[j] == arr[i])
					count[i]++;
			}
		}
		int idx = 0;
		for (int i = 1; i < count.length; i++) {
			if(count[idx] < count[i]){
				idx = i;
			}
		}
		
		System.out.println(sum/10);
		System.out.println(arr[idx]);
		
	}
}
반응형

'PS 문제 풀이 > Baekjoon' 카테고리의 다른 글

[BOJ] 백준 2739 구구단  (0) 2022.01.13
[BOJ] 백준 2605 줄 세우기  (0) 2022.01.12
[BOJ] 백준 2588 곱셈  (0) 2022.01.11
[BOJ] 백준 2566 최댓값  (1) 2022.01.10
[BOJ] 백준 2506 점수계산  (0) 2022.01.08

댓글