n일 동안 매일 아침 기온을 쟀다.
첫 줄에 n이 주어진다.
둘째 줄에 아침 기온 n개가 잰 순서대로 빈칸 하나로 띄워 주어진다.
평균은 기온을 모두 더해 n으로 나눈 값이며, 소수점 아래를 버리거나 반올림하지 않고 그대로 쓴다.
아침 기온이 평균 이상인 날의 수를 출력하라.
기온이 평균과 딱 같은 날도 센다.
입력
1 ≤ n ≤ 1,000, -50 ≤ 기온 ≤ 50(정수)
출력
기온이 평균 이상인 날의 수를 한 줄에
예시 1 · stdin
4
1 2 2 5
stdout
1
예시 2 · stdin
3
7 7 7
stdout
3
main.py
오류 목록00F8 ↓ · ⇧F8 ↑
입력(stdin)
실행하면 이 줄들이 차례로 input()·표준 입력으로 들어가요(실행 중에 묻지 않아요).
$ 준비됐어요
코드를 입력해 풀려면 PC에서 열어 주세요. 모바일에서는 문제와 풀이를 볼 수 있어요.
다른 언어로는?언어별 풀이 보기 · 8개 언어 풀이
조건에 맞는 것을 세는 방법이 언어마다 달라요. Python은 sum(x * n >= total for x in a)처럼 참을 1로 쳐서 더해요. JS·TS는 a.filter(x => x >= avg).length, C#은 a.Count(x => x * n >= total), Java는 Arrays.stream(a).filter(x -> x * n >= total).count(), C++은 std::count_if를 써요. C는 비교의 결과가 1 또는 0이라 count += (a[i] * n >= total)로 더할 수 있어요. Java와 C#은 count += (x >= avg)가 컴파일되지 않고, 크레이콘도 참/거짓을 수에 더하면 오류로 멈추므로 만약으로 세요. 함정 하나: 평균을 구하는 나눗셈이에요. C·C++·Java·C#에서 정수끼리 total / n으로 나누면 소수점 아래가 버려져요. 예시 1의 평균은 2.5인데 2가 되어, 2도인 이틀까지 세어 3이 나와요. Python의 //도 2가 되어 똑같이 3이 나와요. Python·JS·TS·크레이콘의 /는 실수 나눗셈이라 2.5가 그대로 나와요. 정수만 쓰려면 x ≥ total ÷ n의 양쪽에 n을 곱해 x * n >= total로 견줘요. 평균이 음수이면 두 나눗셈이 서로 달라져요. 기온이 -4 -3 -2 -1이면 평균은 -2.5이고 답은 2예요. C의 /는 0 쪽으로 버려 -2가 되므로 우연히 2가 나오지만, Python의 //는 아래로 내려 -3이 되므로 3이 나와요. 함정 둘: '이상'은 >=예요. >로 쓰면 평균과 딱 같은 날이 빠져서 예시 2가 3이 아니라 0이 돼요.
Pythonmain.py · 6 줄
n = int(input())a = list(map(int, input().split()))total = sum(a)# x >= total / n 의 양쪽에 n을 곱하면 나눗셈 없이 정수끼리 견줄 수 있다# 참은 1, 거짓은 0으로 더해지므로 sum이 곧 개수다print(sum(x * n >= total for x in a))
JavaScriptmain.js · 5 줄
const [n, ...a] = require("fs").readFileSync(0, "utf8").trim().split(/\s+/).map(Number);const total = a.reduce((s, x) => s + x, 0);// JS의 /는 늘 실수 나눗셈이라 평균이 2.5처럼 그대로 나온다const avg = total / n;console.log(a.filter((x) => x >= avg).length);
TypeScriptmain.ts · 6 줄
import { readFileSync } from "node:fs";const [n, ...a]: number[] = readFileSync(0, "utf8").trim().split(/\s+/).map(Number);const total: number = a.reduce((s, x) => s + x, 0);// TS의 /는 늘 실수 나눗셈이라 평균이 2.5처럼 그대로 나온다const avg: number = total / n;console.log(a.filter((x) => x >= avg).length);
JavaMain.java · 15 줄
import java.util.Arrays;import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] a = new int[n]; for (int i = 0; i < n; i++) a[i] = sc.nextInt(); int total = Arrays.stream(a).sum(); // int끼리 나누면 소수점 아래가 버려지므로 양쪽에 n을 곱해 견준다 long count = Arrays.stream(a).filter(x -> x * n >= total).count(); System.out.println(count); }}
C#Main.cs · 14 줄
using System;using System.Linq;class Program{ static void Main() { int n = int.Parse(Console.ReadLine()); int[] a = Array.ConvertAll(Console.ReadLine().Split(' ', StringSplitOptions.RemoveEmptyEntries), int.Parse); int total = a.Sum(); // int끼리 나누면 소수점 아래가 버려지므로 양쪽에 n을 곱해 견준다 Console.WriteLine(a.Count(x => x * n >= total)); }}
C++main.cpp · 14 줄
#include <algorithm>#include <iostream>#include <numeric>#include <vector>int main() { int n; std::cin >> n; std::vector<int> a(n); for (int& x : a) std::cin >> x; int total = std::accumulate(a.begin(), a.end(), 0); // int끼리 나누면 소수점 아래가 버려지므로 양쪽에 n을 곱해 견준다 std::cout << std::count_if(a.begin(), a.end(), [&](int x) { return x * n >= total; }) << "\n";}
Cmain.c · 18 줄
#include <stdio.h>int main(void) { int n, a[1000], total = 0; scanf("%d", &n); for (int i = 0; i < n; i++) { scanf("%d", &a[i]); total += a[i]; } int count = 0; for (int i = 0; i < n; i++) { /* total / n은 소수점 아래를 버리므로 양쪽에 n을 곱해 견준다. C에서 비교의 결과는 int 1 또는 0이라 그대로 더할 수 있다 */ count += (a[i] * n >= total); } printf("%d\n", count); return 0;}
Craykonmain.cray · 19 줄
n = 콘솔.줄읽기().수로변환();a = 콘솔.수들읽기();합 = 0;각각 (x 에서 a){ 합 += x;}// 크레이콘의 /는 실수 나눗셈이라 평균이 2.5처럼 그대로 나온다평균 = 합 / n;개수 = 0;각각 (x 에서 a){ // 참/거짓은 수에 더할 수 없으므로 만약으로 센다 만약 (x >= 평균) { 개수 += 1; }}콘솔.쓰기(개수);