728x90
[백준알고리즘] 2309번: 일곱 난쟁이 -Python
https://www.acmicpc.net/problem/2309
케이스가 작기 때문에 모든 경우를 반복문으로 돌려도 상관없으나 나같은 경우에는 포인터를 두개 두고 한명씩 인덱싱해가면서 두명을 걸러내도록 했다.
정렬을 하고, 한명은 왼쪽에서부터 다른 한명은 오른쪽에서부터 인덱싱해가면서 해당 두명을 제외한 일곱명의 키를 구한다.
이 키가 100보다 클 경우에는 더 키가 큰 사람을 제외해야하기 때문에 오름차순으로 정렬된 상태의 난쟁이들이기 때문에, 왼쪽 포인터를 하나 오른쪽으로 옮기면서 더 키가 큰 두사람을 인덱싱하도록 한다.
반대로 키가 100보다 작다면 더 키가 작은 사람을 제외해야한다는 것이기 때문에 오른쪽 포인터가 가리키는 난쟁이의 왼쪽 난쟁이를 포함시키면서 더 키가 작은 두사람을 인덱싱하도록 했다.
h = sorted([int(input()) for _ in range(9)])
seven = sum(h)
lp, hp = 0, 8
while lp < hp:
seven -= (h[lp] + h[hp])
if seven == 100:
for i in range(9):
if i == lp or i == hp:
continue
print(h[i])
break
if seven < 100:
seven += (h[lp] + h[hp])
hp -= 1
else: # seven > 100
seven += (h[lp] + h[hp])
lp += 1
잘못된 점이나 부족한 점 지적해주시면 감사하겠습니다
728x90
'algorithm > 백준알고리즘' 카테고리의 다른 글
[백준알고리즘] 14502번: 연구소 -Python (0) | 2020.04.02 |
---|---|
[백준알고리즘] 14501번: 퇴사 -Python (0) | 2020.04.02 |
[백준알고리즘] 1011번: Fly me to the Alpha Centauri -Python, C++ (0) | 2020.04.01 |
[백준알고리즘] 10250번: ACM 호텔 -Python (0) | 2020.04.01 |
[백준알고리즘] 2839번: 설탕 배달 -Python, C++ (0) | 2020.03.31 |