소스 코드
# 세제곱수를 저장할 공간
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. 개인적인 코드와 코드를 작성의 이유를 적은 것입니다.
오류나 적절치 않은 문법이 존재할 수 있으며, 다른 분들께는 굉장히 비효율적인 방법으로 여겨질 수 있습니다.
혹시 개선 사항, 오류 및 문제에 대한 수정 사항 등을 댓글로 남겨주신다면 감사한 마음으로 배우고 수정하겠습니다.
'코딩 문제해결 > 문제 풀이.SWEA' 카테고리의 다른 글
[SWEA 코딩] 테네스의 특별한 소수 - PYTHON #4698 (0) | 2021.03.20 |
---|---|
[SWEA 코딩] 진수의 홀수 약수 - PYTHON #5213 (0) | 2021.03.19 |
[SWEA 코딩] 주기 찾기 - PYTHON #11316 (0) | 2021.03.17 |
[SWEA 코딩] 재관이의 대량 할인 - PYTHON #4050 (0) | 2021.03.16 |
[SWEA 코딩] 가능한 시험 점수 - PYTHON #3752 (0) | 2021.03.16 |