문제
<배경>
자동차 제조 과정에서는 다양한 테스트를 통해 해당 자동차가 잘 만들어졌는지를 평가합니다.
이러한 평가 지표 중 하나는 자동차의 연비입니다.
자동차의 연비가 높을수록 연료 소비가 적고, 더 많은 거리를 주행할 수 있으므로 이는 자동차가 잘 만들어졌는지의 지표로 사용될 수 있습니다.
만약 3대의 자동차를 테스트하고, 각각의 연비를 측정한다고 가정해봅시다.
첫 번째 자동차의 연비는 9km/L, 두 번째 자동차의 연비는 15km/L, 세 번째 자동차의 연비는 20km/L이라고 합시다.
이 경우, 중앙값은 15km/L이 됩니다.
따라서 이 데이터에서는 중앙값을 이용하여 자동차의 평균적인 연비를 파악할 수 있으며, 이는 자동차 제조 과정에서 테스트의 결과를 평가하는데에 활용될 수 있습니다.
$n$대의 자동차를 새로 만들었지만 여건상 3대의 자동차에 대해서만 테스트가 가능한 상황입니다. $n$대의 자동차의 실제 연비 값이 주어졌을 때, $q$개의 질의에 대해 임의로 3대의 자동차를 골라 테스트하여 중앙값이 $m_i$값이 나오는 서로 다른 경우의 수를 구하는 프로그램을 작성해보세요.
<입력>

<출력>
$q$개의 줄에 걸쳐 3대의 자동차를 골랐을 때 연비의 중앙값이 $m_i$가 나오는 서로 다른 가짓수를 한 줄에 하나씩 출력합니다.
풀이
문제와 풀이 알고리즘은 모두 간단한데 시간 초과를 신경써야한다.
알고리즘은 정렬 후 해당 중앙값 보다 작은 원소의 개수와 큰 원소의 개수를 세서 곱하면 된다.
파이썬으로 풀기 때문에 시간을 아끼기 위해 여러 유용한 방법을 사용할 수 있다.
import bisect를 통해 이진탐색을 한 줄로 할 수 있다.
또 m not in mileage를 하면 시간이 오래 걸리므로 set자료형의 특징을 살려 set으로 변환 후 not in을 판단해줬다.
import bisect
n,q = map(int,input().split())
mileage = list(map(int,input().split()))
mileage.sort()
setMileage = set(mileage)
for _ in range(q):
m = int(input())
if m not in setMileage:
print(0)
else:
idx = bisect.bisect_left(mileage,m)
print(idx*(n - idx - 1))'알고리즘&문제풀이' 카테고리의 다른 글
| [Softeer] HSAT 7회 기출 - 순서대로 방문하기 (0) | 2025.12.25 |
|---|---|
| [Softeer] HSAT 6회 기출 - 출퇴근길 (0) | 2025.12.23 |
| [Softeer] HSAT 6회 기출 - 염기서열 (1) | 2025.12.20 |
| [Softeer] HSAT 5회 기출 - 성적 평가 (0) | 2025.12.19 |
| [Softeer] HSAT 5회 기출 - 업무 처리 (0) | 2025.12.18 |