https://www.acmicpc.net/problem/1011
1011번: Fly me to the Alpha Centauri
우현이는 어린 시절, 지구 외의 다른 행성에서도 인류들이 살아갈 수 있는 미래가 오리라 믿었다. 그리고 그가 지구라는 세상에 발을 내려 놓은 지 23년이 지난 지금, 세계 최연소 ASNA 우주 비행사가 되어 새로운 세계에 발을 내려 놓는 영광의 순간을 기다리고 있다. 그가 탑승하게 될 우주선은 Alpha Centauri라는 새로운 인류의 보금자리를 개척하기 위한 대규모 생활 유지 시스템을 탑재하고 있기 때문에, 그 크기와 질량이 엄청난 이유로 최신기술력을
www.acmicpc.net
내 풀이:
1
2
3
4
5
6
7
8
9
10
11
|
num=int(input())
for i in range(num):
a,b=map(int,input().split())
l=b-a
n=1
while n*n<l:
n+=1
if n*n-n<l:
print(2*n-1)
else:
print(2*n-2)
|
그동안 제곱, 루트 등의 계산은 모듈을 호출해야 가능하다고 생각하여 빠른 계산에 대한 알고리즘을 고민하지 못했다.
kdh6975님 풀이:
1
2
3
4
|
for _ in range(int(input())):
x,y=map(int,input().split())
l=int((y-x-1)**0.5)
print(2*l+1 if y-x>l**2+l else 2*l)
|
**0.5 는 ^0.5 즉, 루트에 해당하는 코딩으로 내가 while n*n<l 조건식을 이용하여 멈추고 싶은 n값을 0부터 찾아 계산하는 과정을 한번의 계산으로 해결 가능하다. 이외의 문제를 풀 때 루트계산이 가능하다는 것을 인지하고 빠른 계산이 가능한 알고리즘을 찾도록 노력해야 한다.
파이썬으로 풀어보는 백준 2447번: 별 찍기 - 10 (0) | 2020.01.09 |
---|---|
파이썬으로 풀어보는 백준 4948번: 베르트랑 공준 (0) | 2020.01.09 |
파이썬으로 풀어보는 백준 2581번: 소수 (0) | 2020.01.08 |
파이썬으로 풀어보는 백준 4673번: 셀프 넘버 (0) | 2020.01.04 |
파이썬으로 풀어보는 백준 2920번: 음계 (0) | 2020.01.04 |
댓글 영역