4. 대표값
N명의 학생의 수학성적이 주어집니다. N명의 학생들의 평균(소수 첫째자리 반올림)을 구하고,
* ave = sum(score)/n
ave = int (ave+0.5)
N명의 학생 중 평균에 가장 가까운 학생은 몇 번째 학생인지 출력하는 프로그램을 작성하세
요. * 평균에 가장 가까운 사람 = 뺏을때 절댓값이 가장 적은 사람
* tmp = abs(x-ave)
if tmp < min:
score = x
res = idx + 1
답이 2개일 경우 성적이 높은 학생의 번호를 출력하세요. 만약 답이 되는 점수가 여러 개일
경우 번호가 빠른 학생의 번호를 답으로 한다.
* tmp == min (답이 여러개일 경우)
if x > score:
score = x
res = idx + 1
▣ 입력설명
첫줄에 자연수 N(5<=N<=100)이 주어지고, 두 번째 줄에는 N개의 자연수가 주어진다.
학생의 번호는 앞에서부터 1로 시작해서 N까지이다.
▣ 출력설명
첫줄에 평균과 평균에 가장 가까운 학생의 번호를 출력한다.
평균은 소수 첫째 자리에서 반올림합니다.
▣ 입력예제 1
10
45 73 66 87 92 67 75 79 75 80
▣ 출력예제 1
74 7
n=int(input())
a=list(map(int, input().split()))
ave=sum(a)/n
ave=ave+0.5
ave=int(ave)
min=2147000000 #??
for idx, x in enumerate(a):
tmp=abs(x-ave)
if tmp<min:
min=tmp
score=x
res=idx+1
elif tmp==min:
if x>score:
score=x
res=idx+1
print(ave, res)
배운 것
enumerate: for index, value in enumerate(list/set/tuple/dictionary 등): 의 형식으로 사용
return min((abs(n-one), n) for n in values
def nearest_value(values: set, one: int) -> int:
return min((abs(n-one), n) for n in values
abs(x)는 어떤 숫자를 입력받았을 때, 그 숫자의 절댓값을 돌려주는 함수이다.
>>> abs(3)
3
>>> abs(-3)
3
>>> abs(-1.2)
1.2
def nearest_value(value: set, one: int) -> int:
values = list(values)
values.sort()
near_value = values[0] # 제일 작은 것.
for i in range(1, len(values)):
if abs(values[i] - one) < abs(near_value - one):
near_value = valuses[i]
retrun near_value
3. enumerate
- 반복문 사용 시 몇 번째 반복문인지 확인이 필요할 수 있습니다. 이때 사용합니다.
- 인덱스 번호와 컬렉션의 원소를 tuple형태로 반환합니다.
>>> t = [1, 5, 7, 33, 39, 52] >>> for p in enumerate(t): ... print(p) ... (0, 1) (1, 5) (2, 7) (3, 33) (4, 39) (5, 52)
res=idx+1
print(ave, res)
>>> t = [1, 5, 7, 33, 39, 52]
>>> for p in enumerate(t):
... print(p)
...
(0, 1)
(1, 5)
(2, 7)
(3, 33)
(4, 39)
(5, 52)
'프로그래밍 공부 > 알고리즘 공부' 카테고리의 다른 글
** 7. 자료구조와 알고리즘 입문_한국정보올림피아드 (0) | 2020.11.08 |
---|---|
***5. 자료구조와 알고리즘 입문_한국정보올림피아드 (0) | 2020.11.08 |
소수 구하기, 함수 프로그램 (0) | 2020.11.01 |
k에 대한 약수를 출력 (0) | 2020.11.01 |
피보나치 수열 (0) | 2020.11.01 |
댓글