Algorithm/📊 Problem Solving

[백준/BOJ] 1484 - 다이어트

posted by sangmin

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인 것이 문제에서 원하는 답이다.

 

1484번: 다이어트

첫째 줄부터 한 줄에 하나씩 가능한 성원이의 현재 몸무게를 오름차순으로 출력한다. 가능한 몸무게가 없을 때는 -1을 출력한다. 현재 몸무게는 자연수로 떨어지지 않을 수도 있는데, 이런 경우

www.acmicpc.net