코딩테스트 문제풀이/beakjoon
[백준] 18310 안테나
merona99
2022. 6. 11. 00:13
반응형
백준 18310번 안테나
수학 / 그리디 / 정렬
[문제]

이 문제는 중앙값을 구하는 것
중간값x .. 이걸로 계속 false가 나왔다.
여러 개의 값이 나오면 작은 번호의 집을 출력하는 것 체크해두고 가기
[풀이과정]
<중앙값 구하기>
1. 집들의 수가 짝수일 경우:
1-1) idx = 집들의 수를 2로 나누기
1-2) idx-1의 값을 출력 <-우리는 작은 번호의 집이 필요하기 때문에 2개의 수가 가운데 일텐데 그중에 가운데 것을 뽑아야 함
2. 집들의 수가 홀수일 경우:
2-1) idx = 집들의 수를 2로 나누기
2-2) 출력
[소스코드]
# 안테나 2022-06-10
n = int(input())
house = list(map(int, input().split()))
house.sort()
if len(house) % 2 == 0:
# 짝수
idx = len(house) //2
result = house[idx-1]
else:
# 홀수
idx = len(house) // 2
result = house[idx]
print(result)
[통과]

// 처음에 했던 방법은 값들을 2로 나눴을 때의 숫자와 가까운 집을 출력하는 방법이었다.
이는 중간값을 이용한 방법인데 우선 틀렸다.

이 반례를 보면 왜 틀렸는지 알 수 있음!
반응형