BOJ | 4344번

송치헌·2021년 6월 22일
0
post-thumbnail
post-custom-banner

Python 풀이

import sys

C = int(input()) #테스트 케이스 개수 입력
for _ in range(C):
    #학생수와 각 학생의 점수를 입력받아서 리스트로 변환
    score = list(map(int,sys.stdin.readline().split()))
    #리스트의 1번째 인덱스부터 마지막까지(각 학생의 점수) 0번째 인덱스(학생 수)로 나눠서 평균을 저장
    avg = sum(score[1:])/(score[0])
    cnt = 0 #평균이 넘는 학생을 카운트
    #리스트의 1번째 인덱스부터 마지막까지 i가 순회(score[1:] : indexing)
    for i in score[1:]:
        if score[i]>avg: cnt+=1 #평균이 넘는 학생 카운트
    #포멧팅(formating)으로 소수점아래 3자리까지 출력
    print("{0:.3f}%".format(cnt/score[0]*100))

score리스트에 예제 입력에서 보이는대로 학생 수와 각 학생의 점수를 입력하여 리스트화해서 저장한다.
그 다음 평균을 구해서 평균보다 점수가 높은 학생의 수를 구한다.
마지막으로 그 비율을 구해서 출력하면 된다.
어려운 문제는 아니지만 포멧팅의 개념을 잠깐 설명하자면
f-string과 비슷하게 보면 된다.
f-string의 사용법은 아래와 같고,

>>> a = 94
>>> print(f"apple = {a}")
apple = 94

포멧팅의 사용법은 아래와 같다.

a = 15.3356
>>> print("apple = {0:.3f}".format(a))
apple = 15.336

f-string은 다른 문제에서 설명한 적이 있어서 나의 velog에서 'f-string'을 검색해서 찾아보길 바란다.

포멧팅은 print("{0:.3f}".format(variable)) 이런식으로 사용하면 된다.
물론 format함수 안에 들어가는 변수는 String형만 아니면 되는 것 같다.(int, float, boolean다 오류없이 잘 된다. list, tuple같은 컨테이너 변수도 TypeError가 난다.)
여기서 0은 인덱스 번호이다.

>>> a = 1.555
>>> b = 2.555
>>> print("{0:.3f}".format(a,b))
1.555
>>> print("{1:.3f}".format(a,b))
2.555

0일 경우 a(1.555)가 출력되고 1일 경우 b(2.555)가 출력된다.
.3f는 소수점 아래 3번째 자리까지 표현하라는 의미이다. 소수점 아래 4번째 자리에서 자동으로 반올림된다.

C++ 풀이

#include <iostream>

using namespace std;

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    int T;
    cin >> T;
    cout << fixed;
    cout.precision(3);
    while (T--) {
    	int N;
    	int sum = 0;
    	cin >> N;
    	int *arr = new int[N];
    	for (int i = 0; i < N; i++) {
    		cin >> arr[i];
    		sum += arr[i];
    	}
    	int cnt = 0;
    	for (int i = 0; i < N; i++) {
    		if (arr[i] > (sum / (float)N)) cnt++;
    	}
    	cout << (float)cnt / (float)N * (float)100 << "%" << '\n';
    }
}

int *arr = new int[N]은 배열의 동적 할당이다. 원래 배열(Array)는 정적이기 때문에 정해진 메모리만 사용할 수 있는데 동적 할당을 통하여 더 유동적으로 메모리를 사용할 수 있다. 이 부분에 대해서는 나중에 자세히 설명하겠다.

profile
https://oraange.tistory.com/ 여기에도 많이 놀러와 주세요
post-custom-banner

0개의 댓글