1484 - 다이어트
📌 문제
성원이는 다이어트를 시도중이다. 성원이는 정말 정말 무겁기 때문에, 저울이 부셔졌다.
성원이의 힘겨운 다이어트 시도를 보고만 있던 엔토피아는 성원이에게 새로운 저울을 선물해 주었다.
성원이는 엔토피아가 선물해준 저울 위에 올라갔다. “안돼!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! G 킬로그램이나 더 쪘어ㅜㅠ”라고 성원이가 말했다. 여기서 말하는 G킬로그램은 성원이의 현재 몸무게의 제곱에서 성원이가 기억하고 있던 몸무게의 제곱을 뺀 것이다.
성원이의 현재 몸무게로 가능한 것을 모두 출력하는 프로그램을 작성하시오.
📋 코드
G = int(input())
arr = [int(x**2) for x in range(100001)]
left, right = 1, 2
result = []
while True:
if right - left == 1 and arr[right] - arr[left] > 100000:
break
if arr[right] - arr[left] < G:
right += 1
elif arr[right] - arr[left] > G:
left += 1
else:
result.append(right)
left += 1
if result:
[print(x) for x in result]
else:
print(-1)
💡 한마디
arr 리스트에 인덱스 제곱을 저장해두고 시작했다. right 를 현재 몸무게, left 를 기억하고 있던 몸무게로 두고, 그 차이가 G인 것이 문제에서 원하는 답이다.