728x90
알고 넘어가야 할 파이썬 이론:
최소값 구하기 알고리즘:
# 최소값 구하기
arr = [5,3,7,9,2,5,2,6]
arrMin = float('inf')
for x in arr:
if x < arrMin:
arrMin = arr[x]
print(arrMin)
오늘 배운 내용
내가 생각한 문제풀이 :
내가 생각한 문제풀이:
N명의 학생수의 점수들로 평균을 구하고 for문 과 if문을 이용해서 평균과 가장 가까운 학생을 구할 수 있을 것 같은데..
# 대표값 구하기
#입력예제 :
# 10
# 45 73 66 87 92 67 75 79 75 80
#출력예제 :
# 74 7
n = int(input())
score_list = list(map(int,input().split()))
avg = 0
sum = 0
#평균을 먼저 구하고
for i in range(len(score_list)):
sum += score_list[i]
avg = round(sum / len(score_list))
print(avg)
# 학생들의 점수에서 평균을 뺀 배열을 다시 만들자..!
avg_list = []
for x in score_list:
avg_list.append(x - avg)
print(avg_list)
#그리고 거기서 0과 가까운 값을 어떻게 구하지...??? 모르겠다..ㅜㅠ
내가 작성해본 코드..
저기서 0과 가까운 값을 절대값으로 찾아서 그 절대값의 최소값을 뽑아내면 답 나올 것 같은데... 알듯말듯
더보기
정답 코드
n = int(input())
a = list(map(int,input().split()))
ave = int(sum(a)/n + 0.5)
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)
더보기
코드 분석
# 대표값 구하기
#입력예제 :
# 10
# 45 73 66 87 92 67 75 79 75 80
#출력예제 :
# 74 7
n = int(input())
a = list(map(int,input().split()))
ave = int(sum(a)/n + 0.5) # 0.5를 더해서 반올림 해주고, int화를 시켜서 소수점이 나오지 않도록 출력한다.
min = 2147000000 #제일 큰 수를 임의로 지정해준다.
for idx,x in enumerate(a):
#a의 인덱스 값을 idx에 넣어주고 x에 a 리스트의 값을 넣어서 대응해주는 함수 enumerate()
tmp = abs(x-ave)
if tmp < min :
min = tmp
score = x
res = idx+1 #학생번호 인데 인덱스가 0번부터 시작하니까 +1을 해주어야 한다.
#답이 2개인 경우 구현
elif tmp == min:
if x>score :
score = x
res = idx + 1
print(ave, res)
더 배울 내용
느낌점
조금씩 코드를 쓰는것을 알 것 같은 느낌이 든다.
처음에 할 때는 한글로만 생각했는데 오늘은 그래도 코드를 조금이라도 끄적여볼 수 있었다.
조금씩 느는것이 느껴지니까 알고리즘 공부하는데 너무나 신이났다.
'Practice > 알고리즘' 카테고리의 다른 글
| 알고리즘 스터디: 양꼬치 , 삼각형의 완성조건(1) (0) | 2022.11.18 |
|---|---|
| 파이썬 알고리즘 : 정다면체 (0) | 2022.11.17 |
| 파이썬 알고리즘: K번째 큰 수 구하기. (0) | 2022.11.14 |
| 파이썬 알고리즘: K번째 수 구하기 (0) | 2022.11.11 |
| 파이썬 알고리즘 : K번째 약수 구하기. (1) | 2022.11.10 |
