티스토리 뷰
- 문제 링크
https://www.acmicpc.net/problem/6986
- 풀이
실버 3 난이도의 구현, 정렬 태그가 달려있는 문제였다. 정답률이 25% 밖에 안되서 이 문제가 어렵나 ? 하고 풀어보았다.
직접 풀어보니 절사 평균과 보정 평균을 구할 때 코드상에는 크게 문제가 없었는데 틀려서.. 어 뭐가 문제지 하고 조금 찾아보니 부동소수점에 대한 문제였다. type을 float로 받으면 생기는 문제인데, 해당 문제를 해결하기 위해서는 코드의 맨 밑에 줄을 보면 + 0,00...1 을 더해줌으로서 해결할 수 있다.
절사 평균을 구하기 위해 res 배열에 arr의 K번째 부터 len(arr)-K 곧 전체 배열의 길이-K 의 범위만큼 arr의 값을 append 해줌으로 절사 평균을 구했다.
보정 평균을 구하기 위해서 밑의 j for문을 보면 시작지점부터 K만큼 arr의 값을 arr[K]의 값으로 변경했다.
그리고 k for문을 보면, arr배열의 끝 지점에서 부터 배열의 끝 지점-K 만큼 1씩 내려오며 값을 변경해줌으로 보정평균 값을 구했다.
- 코드
import sys
input = sys.stdin.readline
N, K = map(int, input().split())
arr = []
for _ in range(N):
arr.append(float(input()))
arr.sort()
res = []
for i in range(K, len(arr)-K):
res.append(arr[i])
for j in range(K):
arr[j] = arr[K]
for k in range(len(arr)-1, len(arr)-K-1, -1):
arr[k] = arr[len(arr)-K-1]
print("{:.2f}".format(sum(res) / len(res)+ 0.00000001))
print("{:.2f}".format(sum(arr) / len(arr)+ 0.00000001))
요리보고 저리봐도 잘 짠 코드는 전혀 아니다.. 더 우아하게 짤 수 있도록 노력하자 !
'Algorithm > BOJ' 카테고리의 다른 글
| [BOJ][Python] 백준 1743번 : 음식물 피하기 (0) | 2023.05.31 |
|---|---|
| [BOJ][Python] 백준 10026번 : 적록색약 (0) | 2023.05.11 |
| [BOJ][Python] 백준 2108번 : 통계학 (0) | 2023.04.13 |
| [BOJ][Python] 백준 2589번 : 보물섬 (0) | 2023.04.11 |
| [BOJ][Python] 백준 11724번 : 연결 요소의 개수 (0) | 2023.04.06 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 레벨 2
- 알고리즘
- 리액트 츨겨찾기
- WOFF2
- 마법사 상어
- 최근검색 기능
- 14938
- BFS
- BOJ
- 도넛 행성
- 목데이터
- 리액트
- Python
- 1270
- 백준
- 폰트 최적화
- 백준 10026
- opgg #클론코딩 #할수있다
- 보정평균
- 구현
- boj 10026 python
- 리코쳇 로봇
- 실버3
- 6986
- boj 2589
- 21610
- 데이크스트라
- 파이썬
- 리액트 최근검색
- 서강그라운드
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
글 보관함