coding test - python/기본기 문제

문제 / 대푯값 / Python

sillon 2022. 3. 31. 01:25
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
반응형