본문 바로가기
TIL - 프로그래밍/Python 알고리즘

[SWEA] 5688. 세제곱근을 찾아라 - Python

by chaemj97 2022. 4. 12.
728x90

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

 

SW Expert Academy

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

swexpertacademy.com

< 📝 문제 >
양의 정수 N에 대해 N = X3가 되는 양의 정수X 를 구하여라.


< ❓ 생각 >
1. 세제곱 리스트를 만들어서 N이 그 안에 있으면 세제곱근 = 인덱스

 

2. 세제곱근을 구해서 정수인지 확인하기 -> 반올림했을 때 그대로면 정수


< 💻 코드 >

1.

# 1~10^18중 세제곱인거 리스트에 다 넣기
pow_3 = []
for i in range(10**6+1):
    pow_3.append(pow(i,3))

# 테스트 케이스 개수
T = int(input())
for tc in range(1,T+1):
    N = int(input())
    # N이 pow_3함수 안에 있으면(세제곱) 인덱스 출력
    # 없으면 -1 출력력
    try:
        print(f'#{tc} {pow_3.index(N)}')
    except:
        print(f'#{tc} {-1}')

2.

import math
T = int(input())
for tc in range(1, T+1):
    num = int(input())
    # 세제곱근
    result = num**(1/3)
    # 반올림
    v = round(result)
    # 세제곱근이 정수이면 반올림해도 같은 값
    if math.isclose(result, v):
        print(f'#{tc} {int(v)}')
    else:
        print(f'#{tc} -1')

 

728x90
반응형

댓글