본문 바로가기
Algorithm/etc

[파이썬] 1484 : 다이어트 (골드5)

by 베짱이28호 2024. 1. 16.

[파이썬] 1484 : 다이어트 (골드5)

 

1484번: 다이어트

성원이는 다이어트를 시도중이다. 성원이는 정말 정말 무겁기 때문에, 저울이 부셔졌다. 성원이의 힘겨운 다이어트 시도를 보고만 있던 엔토피아는 성원이에게 새로운 저울을 선물해 주었다.

www.acmicpc.net


문제


풀이

방향성 생각

  • 몸무게 변화량 G = (a+b)(a-b)로 인수분해된다.
  • 자연수 몸무게만 취급한다.
  • 예제 입력을 보면 4를 기준으로 +- 1, 8 기준으로 +- 7
  • 이전, 이후 몸무게의 평균값이 정수이면 된다.
  • 이전*이후 = G이므로, G의 약수를 구한다.

 전체코드

G = int(input())

temp = {}
for i in range(1,int(G**0.5)+1):
    p,q = divmod(G,i)
    if not q and not p==i:
        temp[i] = p

answer = []
for a,b in temp.items():
    p,q = divmod(a+b,2)
    if not q:
        answer.append(p)
answer.sort()

if not answer:
    print(-1)
else:
    for ans in answer:
        print(ans)
  • 딕셔너리 temp에 i로 나누었을 때 나누어 떨어진 값 p를 매칭한다.
  • 매칭한 값 a,b의 평균값이 정수이면 정답에 추가.

코멘트

댓글