상세 컨텐츠

본문 제목

백준 1011번: Fly me to the Alpha Centauri

Python/문제풀이

by 코딩하는 낙타 2020. 1. 6. 23:56

본문

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+else 2*l)
 

**0.5 는 ^0.5 즉, 루트에 해당하는 코딩으로 내가 while n*n<l 조건식을 이용하여 멈추고 싶은 n값을 0부터 찾아 계산하는 과정을 한번의 계산으로 해결 가능하다. 이외의 문제를 풀 때 루트계산이 가능하다는 것을 인지하고 빠른 계산이 가능한 알고리즘을 찾도록 노력해야 한다.

관련글 더보기

댓글 영역