본문 바로가기
코딩테스트 파이썬/백준

다이어트 ( 1484 번 )

by 세용용용용 2025. 10. 2.

1484번: 다이어트

 


🧠 알고리즘

  • 투 포인터

 

✔️ 동작 방식

 

  • 두 변수 now(현재 몸무게 후보), prev(기억 몸무게 후보)를 1에서 시작.
  • 반복하면서 now² - prev² 값을 계산.
    • == n이면 정답 후보에 now 추가.
    • < n이면 차이를 키우기 위해 now += 1.
    • > n이면 차이를 줄이기 위해 prev += 1.
  • now가 100000을 넘어가면 종료.
  • 정답 후보가 없으면 -1, 있으면 오름차순으로 출력.

 

 

🧾 코드

import sys

def _main(n):
    answer = []
    now, prev = 1, 1
    
    while now < 100001:
        now_cr = (now ** 2) - (prev ** 2)
        if now_cr <= n:
            if now_cr == n:
                answer.append(now)
            now += 1
        else:
            prev += 1

    if answer:
        return "\n".join(map(str, answer))
    return -1

n = int(sys.stdin.readline().rstrip())
print(_main(n))

 

⏱️ 시간 복잡도

while now < 100001 : 100001 까지 고정길이 반복 ( 상수 시간 )

해당 알고리즘 시간 복잡도 : 상수 시간 복잡도 ( O(1) )

'코딩테스트 파이썬 > 백준' 카테고리의 다른 글

쉬운 계단 수 ( 10844 번 )  (0) 2025.10.12
사회망 서비스(SNS) ( 2533 번 )  (0) 2025.10.04
거의 소수 ( 1456 번 )  (0) 2025.10.02
공항 ( 10775 번 )  (3) 2025.10.01
숌 사이 수열 ( 1469 번 )  (0) 2025.10.01