2 ๋ถ„ ์†Œ์š”

๐Ÿ“ [S3_2108] ํ†ต๊ณ„ํ•™

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;


public class Main {
	static ArrayList<Integer> list;
	static int N;

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();

		// **** input start ****

		N = Integer.parseInt(br.readLine());

		list = new ArrayList<>();

		// ์ •์ˆ˜ ์ž…๋ ฅ
		for (int i = 0; i < N; i++) {
			int input = Integer.parseInt(br.readLine());
			list.add(input);
			// ๋นˆ๋„ ์ถ”๊ฐ€
		}

		// **** input end ****

		// ์ •๋ ฌํ•˜๊ธฐ
		Collections.sort(list);

		// **** output ****
		sb.append(avg()).append("\n").append(center()).append("\n").append(mostView()).append("\n").append(diff());

		System.out.println(sb);

	}

	// ์‚ฐ์ˆ ํ‰๊ท 
	static int avg() {
		double sum = 0.0;
		for (int i = 0; i < N; i++) {
			sum += list.get(i);
		}
		double avg = sum / list.size();

		return (int) Math.round(avg);
	}

	// ์ค‘์•™๊ฐ’
	static int center() {
		return list.get(list.size() / 2);
	}

	// ์ตœ๋นˆ๊ฐ’
	static int mostView() {
		// N์ด ํ•œ๊ฐœ๋ฉด ๊ทธ๋ƒฅ ์ถœ๋ ฅ
		if (N == 1)
			return list.get(0);
		else {
			// map ์‚ฌ์šฉ ( ๊ฐ’, ๋นˆ๋„์ˆ˜ )
			Map<Integer, Integer> map = new HashMap<Integer, Integer>();
			for (int i = 0; i < list.size(); i++) {
				// ํฌํ•จ๋˜์–ด์ ธ ์žˆ์œผ๋ฉด ๋นˆ๋„์ˆ˜๋งŒ 1 ์ฆ๊ฐ€
				if (map.containsKey(list.get(i))) {
					map.replace(list.get(i), map.get(list.get(i)) + 1);
				} else {
					// ์ƒˆ๋กœ์šด ๊ฐ’์ด๋ฉด 1 ์ž…๋ ฅ
					map.put(list.get(i), 1);
				}
			}

			// ๋นˆ๋„์ˆ˜ ๋ฆฌ์ŠคํŠธ
			ArrayList<Integer> check = new ArrayList<>();


			for (Entry<Integer, Integer> m : map.entrySet()) {
				check.add(m.getValue());
			}

			// ์ •๋ ฌ
			Collections.sort(check);

			int temp = check.get(check.size()-1);

			// ์ตœ๋นˆ๊ฐ’์ด 2๊ฐœ ์ด์ƒ
			if(check.get(check.size()-1) == check.get(check.size()-2)) {
				check.clear();
				// map ๋Œ๋ฉด์„œ 2๋ฒˆ์งธ๋กœ ์ž‘์€ ๊ฐ’ ์ถœ๋ ฅ
				for (Entry<Integer, Integer> m : map.entrySet()) {
					// ์ตœ๋นˆ๊ฐ’์ธ ๊ฒฝ์šฐ
					if(m.getValue() == temp) {
						// key ๊ฐ’ ์ €์žฅ
						check.add(m.getKey());
					}
				}
				// key ๊ฐ’ ์ •๋ ฌ
				Collections.sort(check);

				// ๋‘๋ฒˆ์งธ ๊ฐ’ ์ถœ๋ ฅ
				return check.get(1);

			}
			// ์ตœ๋นˆ๊ฐ’์ด 1๊ฐœ์ธ ๊ฒฝ์šฐ
			else {
				int res = 0;
				// map ๋Œ๋ฉด์„œ 2๋ฒˆ์งธ๋กœ ์ž‘์€ ๊ฐ’ ์ถœ๋ ฅ
				for (Entry<Integer, Integer> m : map.entrySet()) {
					// ์ตœ๋นˆ๊ฐ’์ธ ๊ฒฝ์šฐ
					if(m.getValue() == temp) {
						res = m.getKey();
					}
				}
				return res;
			}
		}
	}

	// ๋ฒ”์œ„
	static int diff() {
		return list.get(list.size() - 1) - list.get(0);
	}

}

๐Ÿค” ๋‚˜์˜ ์ƒ๊ฐ

๋ฌธ์ œ๋Š” ์‰ฌ์› ๋Š”๋ฐโ€ฆ

  • ์‚ฐ์ˆ ํ‰๊ท  : ๋ฆฌ์ŠคํŠธ๋กœ ์ˆ˜๋ฅผ ๋ฐ›์•„ avg๋ฅผ ๊ณ„์‚ฐํ•œ ํ›„ Math.round() ์‚ฌ์šฉ
  • ์ค‘์•™๊ฐ’ : ๋ฆฌ์ŠคํŠธ ์ •๋ ฌ Collections.sort() ์ด์šฉํ•ด ํ™€์ˆ˜๊ฐœ๋ฅผ ๋ฐ›๊ธฐ ๋•Œ๋ฌธ์— size()/2 ํ•ด์ฃผ๋ฉด ๊ฐ„๋‹จ
  • ์ตœ๋นˆ๊ฐ’

    • ์ด๊ฒƒ์ด ๋ฌธ์ œ์˜€๋‹ค.. ๋‚ด๊ฐ€ ๋„ˆ๋ฌด ์–ด๋ ต๊ฒŒ ์ƒ๊ฐํ–ˆ๋‚˜๋Š” ์ž˜ ๋ชจ๋ฅด๊ฒ ๋Š”๋ฐ ๋‚˜์˜ ๊ณ„ํš์€ ์ด๋Ÿฌํ–ˆ๋‹ค.
    • HashMap ์„ ์ด์šฉํ•ด map< ๊ฐ’, ๋นˆ๋„์ˆ˜ > ๋ฅผ ์ €์žฅํ–ˆ๋‹ค.
    • ๋นˆ๋„์ˆ˜๋งŒ ๋ฆฌ์ŠคํŠธ๋กœ ๋ฐ›์•„ ์ •๋ ฌํ•ด์„œ ์ตœ๋นˆ์ˆ˜ ๊ตฌํ•ด์ฃผ๊ธฐ
    • ๋งŒ์•ฝ 2๊ฐœ์ด๋ฉด ๋‹ค์‹œ map์„ ๋Œ๋ฉด์„œ ์ตœ๋นˆ๊ฐ’์ธ ๊ฒฝ์šฐ ๋นˆ๋„์ˆ˜๋ฅผ ๋ฆฌ์ŠคํŠธ์— ์ €์žฅํ•ด ์ •๋ ฌํ•ด์„œ 2๋ฒˆ์งธ๋กœ ์ž‘์€ ๊ฐ’์„ ์ถœ๋ ฅํ•ด์คฌ๋‹ค.
  • ๋ฒ”์œ„ : ๋ฆฌ์ŠคํŠธ ์ •๋ ฌํ•œ ๊ฒƒ์„ ์ด์šฉํ•ด์„œ ๋งˆ์ง€๋ง‰๊ฐ’ - ์ฒ˜์Œ๊ฐ’


์ง„์งœ ๋นจ๋ฆฌ ๋๋‚ผ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์˜€๋Š”๋ฐ.. ์ตœ๋นˆ๊ฐ’์—์„œ ๋„ˆ๋ฌด ์‹œ๊ฐ„์„ ๋งŽ์ด ์†Œ๋ชจํ–ˆ๋‹คโ€ฆ ์•„์‰ฝ์“ฐ..

ํƒœ๊ทธ: , , ,

์นดํ…Œ๊ณ ๋ฆฌ:

์—…๋ฐ์ดํŠธ: