Baekjoon - 2108

Tadap·2023년 9월 12일
0

Baekjoon

목록 보기
11/94

문제

Solved.ac 2++

1차시도

public class Main {
	static int size;
	static int[] values;
	public static void main(String[] args) throws Exception{

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();

		size = Integer.parseInt(br.readLine());
		values = new int[size];

		for (int i = 0; i < size; i++) {
			values[i] = Integer.parseInt(br.readLine());
		}

		Arrays.sort(values);

		sb.append(arithmeticMean()).append("\n")
			.append(centerValue()).append("\n")
			.append(mode()).append("\n")
			.append(range());

		System.out.println(sb);


	}

	private static int arithmeticMean() {
		int sum = 0;
		for (int value : values) {
			sum += value;
		}
		// return sum / size;
		return sum / size >= 0 ? sum / size : (sum / size) - 1;
	}

	private static int centerValue() {
		return values[size/2];
	}

	private static int mode() {
		HashMap<Integer, Integer> data = new HashMap<>();
		int max = Integer.MIN_VALUE;
		ArrayList<Integer> returnKeys = null;// = new ArrayList<>();

		for (int value : values) {
			Integer v = data.getOrDefault(value, 0);
			data.put(value, v + 1);
		}

		for (Integer key : data.keySet()) {
			Integer val = data.get(key);
			if (val == max) {
				returnKeys.add(key);
			} else if (val > max) {
				returnKeys = new ArrayList<>();
				max = val;
				returnKeys.add(key);
			}
		}

		if (returnKeys.size() == 1) {
			return returnKeys.get(0);
		}
		returnKeys.sort(Comparator.naturalOrder());

		return returnKeys.get(1);
	}

	private static int range() {
		return values[size-1] - values[0];
	}
}

예시에 있는 예만 구현해서 풀었다.

실패
문제를 정확히 읽지 않았다.

2차시도

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.HashMap;

public class Main {
	static int size;
	static int[] values;
	public static void main(String[] args) throws Exception{

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();

		size = Integer.parseInt(br.readLine());
		values = new int[size];

		for (int i = 0; i < size; i++) {
			values[i] = Integer.parseInt(br.readLine());
		}

		Arrays.sort(values);

		sb.append(arithmeticMean()).append("\n")
			.append(centerValue()).append("\n")
			.append(mode()).append("\n")
			.append(range());

		System.out.println(sb);


	}

	private static int arithmeticMean() {
		double sum = 0;
		for (int value : values) {
			sum += value;
		}

		return (int)Math.round(sum / size);
	}

	private static int centerValue() {
		return values[size/2];
	}

	private static int mode() {
		HashMap<Integer, Integer> data = new HashMap<>();
		int max = Integer.MIN_VALUE;
		ArrayList<Integer> returnKeys = null;// = new ArrayList<>();

		for (int value : values) {
			Integer v = data.getOrDefault(value, 0);
			data.put(value, v + 1);
		}

		for (Integer key : data.keySet()) {
			Integer val = data.get(key);
			if (val == max) {
				returnKeys.add(key);
			} else if (val > max) {
				returnKeys = new ArrayList<>();
				max = val;
				returnKeys.add(key);
			}
		}

		if (returnKeys.size() == 1) {
			return returnKeys.get(0);
		}
		returnKeys.sort(Comparator.naturalOrder());

		return returnKeys.get(1);
	}

	private static int range() {
		return values[size-1] - values[0];
	}
}

반영안한 반올림을 반영하였다.

성공

ps. 중간에 하나 더 있는 틀렸습니다는 수정과정에서 빼먹은 부분이 있어 틀림

0개의 댓글