๋ฌธ์
ํด๋น ํฌ์คํ ์ ๋ฐฑ์ค์ 2108๋ฒ ํต๊ณํ ์ ์ ๊ทผ๊ณผ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ค๋ช ํ ๊ธ ์ ๋๋ค.
์ ๋ต ์์ค ์ฝ๋๋ฅผ ํ์ธํ์๋ ค๋ฉด solve url ์์ ํ์ธ ๊ฐ๋ฅํฉ๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ด๋ค ๋ฐฉ์์ผ๋ก ์ ๊ทผํด์ผ ํ๋์ง๋ฅผ ๋จผ์ ์๊ฐํด๋ณด์.
๋ฌธ์ ์ ๊ทผ
์ด๋ฒ ๋ฌธ์ ๋ Counting Sort์ ๊ฐ๋ + int, double ์ ์ ๋ฆฌ๋ง ์ ๋์ด์์ผ๋ฉด ํ ์ ์๋ ๊ตฌํ ๋ฌธ์ ์ด๋ค.
ํด๊ฒฐ๋ฒ
์ด๋ฒ ๋ฌธ์ ์์ ๊ฐ์ฅ ๊น๋ค๋ก์ด ๋ถ๋ถ์ด ์๋ค๋ฉด ์๋์ 2๊ฐ์ผ ๊ฒ์ด๋ค.
- ์ต๋น๊ฐ
- ์ฐ์ ํ๊ท
์ต๋น๊ฐ
์ ๋ ฅ ๊ฐ์ ๋ฒ์๋ -4000 ~ 4000 ์ด๋ฏ๋ก ์ต๋ 8001 ๊ฐ์ ์๊ฐ ๋ฑ์ฅํ ์ ์๋ค.
์ฌ๊ธฐ์ ์ต๋น๊ฐ์ ๊ฐ์ฅ ๋ง์ด ๋ฑ์ฅํ ์๋ก, Counting Sort ์์ ์ฐ์ด๋ ๊ณ์ counting ์ ์ด์ฉํ๋ค.
์ฐ์ ํ๊ท
์ฐ์ ํ๊ท ์์ ์กฐ๊ธ ํท๊ฐ๋ ธ๋๋ฐ, int / int
์ ํ๋ฉด ๋ฌด์กฐ๊ฑด int ๊ฐ์ด ๋์ค๊ฒ ๋๋ค.
ํ์ง๋ง ๋ฌธ์ ์ ์กฐ๊ฑด์์ ์์ ์ฒซ์งธ ์๋ฆฌ์์ ๋ฐ์ฌ๋ฆผ ํ๋ผ๊ณ ํ๊ธฐ ๋๋ฌธ์ int / int
๋ฅผ ์ํํ๋ค๋ฉด ์ค๋ต์ ๋ง๊ฒ๋๋ค.
๊ทธ๋์ int / int
๊ฐ ์๋ double / double
์ ์ํํด์ผ ํ๋ค.
์ ๋ต ์ฝ๋
public class B2108 {
private static int[] count = new int[8001];
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(br.readLine());
int[] numbers = new int[n];
for (int i = 0; i < n; i++) {
int number = Integer.parseInt(br.readLine());
count[number + 4000]++;
numbers[i] = number;
}
bw.write(average(numbers) + "\n");
bw.write(middle(numbers) + "\n");
bw.write(mode() + "\n");
bw.write(range(numbers) + "\n");
bw.flush();
bw.close();
}
private static int average(int[] numbers) {
int sum = 0;
for(int value : numbers) {
sum += value;
}
double round = (double) Math.round((double) sum / (double) numbers.length);
return (int) round;
}
private static int middle(int[] numbers) {
Arrays.sort(numbers);
return numbers[numbers.length / 2];
}
private static int mode() {
List<Integer> temp = new ArrayList<>();
int max = count[0];
temp.add(0 - 4000);
for (int i = 1; i < count.length; i++) {
if(count[i] == max) {
temp.add(i - 4000);
} else if(count[i] > max) {
max = count[i];
temp.clear();
temp.add(i - 4000);
}
}
if(temp.size() > 1) {
Collections.sort(temp);
return temp.get(1);
}else {
return temp.get(0);
}
}
private static int range(int[] numbers) {
return numbers[numbers.length - 1] - numbers[0];
}
}
๋๊ธ