출처 : https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWXVyCaKugQDFAUo&

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

1. 문제 설명

양의 정수 N에 대해 N = X^3가 되는 양의 정수X 를 구하여라.

[입력]
 

첫 번째 줄에 테스트 케이스의 수 T가 주어진다.
 

각 테스트 케이스의 첫 번째 줄에는 하나의 정수 N(1N10^18) 이 주어진다.

[출력]
 

각 테스트 케이스마다 첫 번째 줄에는‘#T(T는 테스트케이스 번호를 의미하며 1부터 시작한다.)를 출력하고, N = X^3가 되는 양의 정수 X를 출력한다.

만약 이런 X가 존재하지 않으면 -1을 출력한다.

 

2. 코드

0부터 시작하며 일정 범위까지 검사하며 세제곱근이 있는 경우 결과를 저장하고 아닌경우 -1을 출력하도록 하였습니다. 처음에 접근할 때는 세제곱근을 만드는 방법을 사용하려 했지만 소수점이 부정확한 부분이 많아서 방법을 바꾸었습니다.

 

아래가 작성한 코드입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
= int(input())
for tc in range(1, T+1):
    N = int(input())
    result = -1
    k = 0
    # 세제곱근 찾기
    while k**3 < N:
        k += 1
        # 입력된 수의 세제곱근과 같은 경우 결과 반환
        if k**3 == N:
            result = k
            break
    print('#{} {}'.format(tc, result))

+ Recent posts