728x90
반응형
문제 링크
정답 코드는 아래와 같습니다.
1
2
3
4
5
6
7
|
n = int(input())
arr = [int(x) for x in input().split()]
M = max(arr)
s = 0
for item in arr:
s += ((item/M) * 100)
print(s/n)
|
cs |
모든 값에 대해서 특정한 연산을 적용하고 평균을 구하는 문제입니다.
요구하는대로 특정한 연산을 적용하고 평균을 구하도록 구현하였습니다.
아래 영상에서는 괜히 변수명 바꾸다가 삽질을 했네요;;
이 문제는 아래와 같은 정답도 존재합니다. 분배법칙을 이용한 것이죠.
1
2
3
4
5
|
n = int(input())
arr = [int(x) for x in input().split()]
M = max(arr)
s = sum(arr)
print(s/M*100/n)
|
cs |
728x90
모든 값에 특정한 연산을 적용하고 더하는 것이 아니라,
다 더한 다음에 특정한 연산을 적용한 것입니다.
분배법칙에 의하여 수학적으로 동일하기 때문에 정상적으로 동작하는 것을 알 수 있습니다.
또한 반복문 내부의 곱셈 연산이 모두 사라지기 때문에 속도도 훨씬 빠를 것을 기대할 수 있습니다.
한 가지 주의할 점은 컴퓨터에서는 실수를 근사값으로 처리하기 때문에 각 코드의 결과값이 동일하지 않습니다.
따라서 실수 연산에 대하여 오차 범위가 엄격한 경우, 수학적으로 동일한 표현이라고 하더라도 연산 순서에 따라 정답이 틀리는 경우가 발생할 수 있습니다.
python 에서는 overflow 가 발생하지 않지만, 다른 언어에서는 연산 순서가 바뀌게 되면 변수에 잠시 담기는 값도 바뀌기 때문에 overflow 가 발생하기도 하므로 이를 유의하며 코드를 작성해야 합니다.
풀이는 아래 영상을 참고 바랍니다.
www.youtube.com/watch?v=FabXf_RJMYI
저작권 라이선스: CC BY (출처만 표시하면 자유롭게 이용 가능)
728x90
반응형
'백준(BOJ) 문제 풀이' 카테고리의 다른 글
백준 2018번 문제(수들의 합 5) 파이썬(Python) 풀이 [로밍맨] (0) | 2021.07.03 |
---|---|
백준 1976번 문제(여행 가자) 파이썬(Python) 풀이 [로밍맨] (0) | 2021.07.03 |
백준 1504번 문제(특정한 최단 경로) 파이썬(Python) 풀이 [로밍맨] (2) | 2021.07.02 |
백준 1463번 문제(1로 만들기) 파이썬(Python) 풀이 [로밍맨] (4) | 2021.07.02 |
백준 1330번 문제(두 수 비교하기) 파이썬(Python) 풀이 [로밍맨] (0) | 2021.07.02 |