[알각코] 백준 4344번 - 평균은 넘겠지

백준 4344번

inputNum = input()

arr = []
for s in range(0, int(inputNum)):
    string = input()
    arr.append(string)

for i in range(0, int(inputNum)):
    numArr = [int(x) for x in arr[i].split(' ')]
    num = numArr.pop(0)
    print(f'{str(round((sum(numArr) / num), 3))}%')

Screen Shot 2021-07-31 at 4 34 43 PM

inputNum = input()

arr = []
for s in range(0, int(inputNum)):
    string = input()
    arr.append(string)

for i in range(0, int(inputNum)):
    numArr = [int(x) for x in arr[i].split(' ')]
    num = numArr.pop(0)
    print('{:.3f}%'.format(round((sum(numArr) / num), 3)))

Screen Shot 2021-07-31 at 4 46 45 PM

문제를 제대로 안읽어서 기껏 짠 코드인데 두 번이나 틀렸다 ㅠㅠㅠ

inputNum = input()

arr = []
for s in range(0, int(inputNum)):
    string = input()
    arr.append(string)

for i in range(0, int(inputNum)):
    numArr = [int(x) for x in arr[i].split(' ')]
    avg = round(sum(numArr) / numArr.pop(0), 3)
    avgArr = [x for x in numArr if x > avg]
    print('{:.3f}%'.format(round(len(avgArr) / len(numArr)*100, 3)))

Screen Shot 2021-07-31 at 5 25 11 PM

Screen Shot 2021-07-31 at 5 38 03 PM

왜 예제 출력 답안 네번째가 66.667퍼인지 이해가 되지 않았당…

자세히 보니 평균값이 1씩 더해져있는 것을 발견

inputNum = input()

arr = []
for s in range(0, int(inputNum)):
    string = input()
    arr.append(string)

for i in range(0, int(inputNum)):
    numArr = [int(x) for x in arr[i].split(' ')]
    popNum = numArr.pop(0)
    avg = round(sum(numArr) / popNum, 3)
    avgArr = [x for x in numArr if x > avg]
    print('{:.3f}%'.format(round(len(avgArr) / len(numArr)*100, 3)))

Screen Shot 2021-07-31 at 5 49 00 PM

맞았긴 맞았는데 이중포문 들간건 인간적으로 고쳐야할 듯

inputNum = input()

arr = []
for s in range(0, int(inputNum)):
    string = input()
    arr.append(string)

for i in range(0, int(inputNum)): 
    stu = list(map(int, arr[i].split(' ')))
    stuPop = stu.pop(0)
    avg = round(sum(stu) / stuPop, 3)
    avgStu = [x for x in stu if x > avg]
    print('{:.3f}%'.format(round(len(avgStu) / len(stu)*100, 3)))
inputNum = input()

for i in range(0, int(inputNum)): 
    stu = list(map(int, input().split(' ')))
    stuPop = stu.pop(0)
    avg = sum(stu) / stuPop
    avgStu = [x for x in stu if x > avg]
    print('{:.3%}'.format(len(avgStu) / len(stu)))

코드 수를 줄여서 input 값을 아예 하나의 포문 안에서 받도록 바꾸어보아따.

round 함수도 뺄 수 있어서 빼봄!

근데 속도는 오히려 느려짐ㅋㅋㅋㅋ

Screen Shot 2021-07-31 at 10 15 21 PM

inputNum = int(input())

for i in range(inputNum): 
    stu = input().split(' ')
    sco = list(map(int, stu[1:]))
    avg = sum(sco) / len(sco)
    avgStu = [x for x in sco if x > avg]
    print('{:.3%}'.format(len(avgStu) / len(sco)))

코드 수는 많이 줄였는데 속도는 조금 줄었당…

그래서 마지막 찬스로 다른 사람들 코드를 참고해보아따

Screen Shot 2021-07-31 at 10 48 13 PM

inputNum = int(input())

for i in range(inputNum): 
    stu = input().split(' ')
    sco = list(map(int, stu[1:]))
    avg = sum(sco) / len(sco)

    avgStu = 0
    for s in sco:
        if s > avg:
            avgStu += 1
    print('{:.3%}'.format(avgStu / len(sco)))

아니…이래도 속도가 안줄어드넹…ㅠㅠㅠㅠㅠ

참고했던 분의 코드 그대로 붙여넣어 봤더니 속도 차이 거의 안났당.. 모지

어쨋든 평균 이상인 학생수만 그냥 세어서 전체 학생 수로 나누는 방법을 생각 못했어서 공부는 된 듯 하당ㅋㅋㅋㅋㅋ

근데 왜 생각못했지…

Screen Shot 2021-07-31 at 10 56 54 PM