728x90
http://www.acmicpc.net/problem/1484
1484번: 다이어트
성원이는 다이어트를 시도중이다. 성원이는 정말 정말 무겁기 때문에, 저울이 부셔졌다. 성원이의 힘겨운 다이어트 시도를 보고만 있던 엔토피아는 성원이에게 새로운 저울을 선물해 주었다.
www.acmicpc.net
# 조건
- 다이어트 중인 성원이가 저울을 부셨다.
- 새로운 저울위에 올라간 성원이가 안돼!!!!! G킬로그램이나 더 쪘다고 말을 했을 때,
- 여기서 G킬로그램은 성원이 현재 몸무게의 제곱에서 성원이가 기억하고 있던 몸무게의 제곱을 뺀 것 이다.
- 성원이의 현재 몸무게로 가능한 것을 모두 출력하라.
# 접근 방법
- 각 자연수의 제곱을 기록해준다.
- 이 때, 50,000의 제곱 - 49,999의 제곱이 99,999가 되므로 50000까지 투 포인터를 이용해 풀어준다.
- 작은 수를 L포인터로, 큰 수를 R포인터로 사용하여
- 둘의 차이가 G와 같은 경우 R포인터 +1 출력
- G보다 작은 경우 R포인터 이동
- G보다 큰 경우 L포인터를 이동시켜준다.
# 입력 G 킬로그램
G = int(input())
# 1~50000까지 제곱수
weight = [i**2 for i in range(1, 50001)]
result = 0
# L과 R 포인터
L, R = 0,1
# R포인터가 범위를 벗어나지 않는 경우까지만 탐색
while R < 50000:
sub = weight[R] - weight[L]
# 둘의 차이가 G와 같다면 출력해주고 1씩 증가
if sub == G:
print(R+1)
result = 1
L += 1
R += 1
# G보다 크다면 L을 한 칸 이동시켜준다.
elif sub > G:
L += 1
# 반대로 작다면 R을 한 칸 이동시켜준다.
elif sub < G:
R += 1
if result == 0:
print(-1)
728x90
'ALGORITHM > 정렬, 탐색,구현' 카테고리의 다른 글
[백준 1005번] 파이썬 - ACM Craft (0) | 2023.01.05 |
---|---|
[백준 1766번] 파이썬 - 문제집 (1) | 2023.01.03 |
[백준 5525번] 파이썬 - IOIOI (0) | 2022.10.12 |
[백준 17276번] 파이썬 - 배열 돌리기 (0) | 2022.10.10 |
[백준 18870번] 파이썬 - 좌표 압축 (1) | 2022.10.08 |