소스 코드

# 세제곱수를 저장할 공간
num = [0]*(10**6+1)

# num[세제곱근]에 세제곱수를 저장
for q in range(1,10**6+1):
    num[q] = q**3

T = int(input())

for tc in range(1,1+T):
    n = int(input())

    # .index를 사용해서 n을 탐색할 때,
    # n이 num 안에 존재하지 않으면 오류 발생(n is not in list 오류)
    # 이를 해결하기 위해 예외처리로 문제 해결
    try:
        print('#{} {}'.format(tc,num.index(n)))

    except:
        print('#{} {}'.format(tc,-1))

 


해결 방법

1. 주어진 n의 범위는 1 이상 10**18 이하인데, 세제곱근을 구하는 문제이기 때문에 사실상 1 이상 10**6 이하이다

 

2. 세제곱근을 index값으로 갖는 배열을 생성하고, index 값을 세제곱해서 저장한다

 

3. .index()를 사용해서 n 값의 존재 여부를 확인할 것이기 때문에 예외처리를 사용한다


느낀 점

처음으로 문제를 해결할 때, 예외처리(try ~ except)를 사용해봄

 

뭔가 이 전보다 하나라도 더 많은 방법을 익힌것 같아서 기분이 좋다

 

ps. 개인적인 코드와 코드를 작성의 이유를 적은 것입니다.

 

오류적절치 않은 문법이 존재할 수 있으며, 다른 분들께는 굉장히 비효율적인 방법으로 여겨질 수 있습니다.

 

혹시 개선 사항, 오류 및 문제에 대한 수정 사항 등을 댓글로 남겨주신다면 감사한 마음으로 배우고 수정하겠습니다.