BOJ/Silver

[BOJ] #18110 solved.ac

Opal1031 2026. 4. 13. 11:30

solved.ac

백준 #18110


📌 문제

예제 입력

5
1
5
5
7
8

예제 출력

6

📌 풀이

Logic

  • 난이도 의견 개수 N 입력 받기
    • 아무 의견 없으면 '0' 출력 후 프로그램 종료
  • 난이도 의견 리스트 입력 받기
    • 난이도 순서대로 정렬
  • 의견 개수에 다라 절사값 결정
  • 절사 평균 출력
# 변수명
N : 난이도 의견 개수
score : 난이도 의견 리스트
trim : 절사값
trimmed_scores : score 절사 리스트
avg : 절사 평균

Python

import sys
import math

Xa, Ya, Xb, Yb, Xc, Yc = map(int, sys.stdin.readline().split())

if ((Xa * (Yb - Yc) + Xb * (Yc - Ya) + Xc * (Ya - Yb)) == 0):
    print(-1)
    sys.exit()

def dist(x1, y1, x2, y2):
    return math.hypot(x1 - x2, y1 - y2)

a = dist(Xa, Ya, Xb, Yb)
b = dist(Xb, Yb, Xc, Yc)
c = dist(Xc, Yc, Xa, Ya)

circum = [2 * (a + b), 2 * (b + c), 2 * (c + a)]

circum.sort()

print((circum[-1] - circum[0]))

✏️ 새로운 내용

-


📚 회고

💡 반올림

  • python에서 반올림을 구현하는 방법은 크게 두 가지가 있다.
  • round() 함수를 이용하는 방식과 값에 0.5를 더해 int형으로 변환하는 방식이다.
  • 처음에는 전자의 방식으로 문제를 해결하였으나 오류가 발생하였다..!
  • 똑같은 줄 알았던 두 가지 방식에는 약간의 방식 차이가 있었다.
  • round() - Banker's Rounding
    • .5일 때 짝수로 반올림
    • 통계적 편향 제거 목적
      round(2.5)  # → 2 (가장 가까운 짝수)
      round(3.5)  # → 4 (가장 가까운 짝수)
  • int(x + 0.5) - 전통적 반올림
    • .5일 때 항상 올림
    • 일반적으로 기대하는 반올림
      int(2.5 + 0.5)  # → 3 (항상 올림)
      int(3.5 + 0.5)  # → 4 (항상 올림)

  • 해당 문제에서는 우리가 흔히 아는 전통적인 반올림의 방식을 요구하기에, 후자를 따르는 것이 옳다.

'BOJ > Silver' 카테고리의 다른 글

[BOJ] #1064 평행사변형  (0) 2026.04.13
[BOJ] #9012 괄호  (0) 2026.04.13
[BOJ] #11441 합 구하기  (0) 2026.04.13
[BOJ] #2553 마지막 팩토리얼 수  (0) 2026.04.13
[BOJ] #1448 삼각형 만들기  (0) 2026.04.13