728x90
문제 제목: 대푯값
문제 풀이에 앞서 다음 코드를 참고하자
*최솟값 구하기 알고리즘
#최솟값 구하기 알고리즘
arr = [5,3,7,9,2,5,2,6]
arrMin=float('inf') #파이썬에서 가장 큰 수를 나타냄
for i in range(len(arr)):
if arr[i] < arrMin:
arrMin = arr[i]
#크거나 같다 vs 크다 :부호에 따라서 인덱스 번호가 달라짐
일단 arr 배열만 보면 최솟값은 2이다.
<를 넣으면 최솟값으로 저장되는 것은 arr[4] 의 2이고
<= 를 넣으면 최솟값으로 저장되는 것은 arr[4]를 지나서 arr[6] 이 최솟값으로 저장된다.
따라서 넣어주는 부호에 따라 다르다.
풀이
N = int(input())
score = list(map(int,input().split()))
avg =round( sum(score) / n )
min = 2147000000 #대충 가장 큰 값을 지정해준다
for idx, x in enumerate(a):
tmp = abs(x-ave) #점수에서 평균을 뺀 절댓값(평균과의 거리)
if tmp<min:
min = tmp
score = x
res = idx +1 #0번부터 시작했으니 1을 더함
elif tmp ==min: #평균과의 거리가 같다
if x>score:#점수가 큰 학생이 답이 되어야함 (문제조건)
score =x
res = idx +1
print(avs,res)
문제 해답을 구할 때 막막했는데, enumerate를 이용하면 쉽게 인덱스와 값을 이용하여 구할 수 있다.
※ 알아야 할 것
- enumerate 를 이용해서 적절하게 써보자!
- 부등호를 문제 조건을 보고 알맞게 사용해야함. 잘못 사용하면 문제 조건을 벗어날 수 있다.
728x90
'coding test - python > 기본기 문제' 카테고리의 다른 글
문제 / 소수 개수 출력하기 (에라토스테네스 체) / Python (0) | 2022.03.31 |
---|---|
문제 / 정다면체 / Python (0) | 2022.03.31 |
문제 / K번째 큰 수 / Python (0) | 2022.03.30 |
문제 / K번째 수 / Python (0) | 2022.03.30 |
문제 / K번째 약수/ Python (0) | 2022.03.30 |