관리 메뉴

솜씨좋은장씨

[SW Expert Academy] 10570번 : 제곱 팰린드롬 수 (Python) 본문

Programming/코딩 1일 1문제

[SW Expert Academy] 10570번 : 제곱 팰린드롬 수 (Python)

솜씨좋은장씨 2021. 9. 21. 17:23
728x90
반응형

코딩 1일 1문제! 오늘의 문제는 삼성 SW Expert Academy 10570번 제곱 팰린드롬 수 입니다.

제곱 팰린드롬 수 문제를 파이썬으로 풀이하였습니다.

 

SW Expert Academy

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

swexpertacademy.com

👨🏻‍💻 문제 풀이

주어진 숫자 두개 사이의 숫자들 중에 

현재 숫자와 숫자의 제곱근 수 ( 루트(숫자) ) 값이 모두 팰린드롬 수 인 값들의 개수를 구하는 문제입니다.

result = False
    
sqrt_num = math.sqrt(num)
num = str(num)

if float(int(sqrt_num)) == sqrt_num:
    sqrt_num = str(int(sqrt_num))

    if num == num[::-1] and sqrt_num == sqrt_num[::-1]:
        result = True

제곱근 수를 구하는 데에는 math의 sqrt를 활용했습니다.

팰린드롬을 확인하는데에는 문자열을 거꾸로 뒤집는 방법인 ::-1 을 활용하여 

그냥 숫자 문자열과 거꾸로 뒤집은 문자열의 값이 같을 경우 팰린드롬 수 라고 하였습니다.

이를 함수로 만들고

cnt = 0
    
for num in range(num1, num2 + 1):            
    if is_palindrome(num):
        cnt += 1

입력 받은 두 수 사이의 수를 하나씩 꺼내어 함수에 넣어 확인해보고 이 결과값이 True이 경우

개수를 하나씩 카운트하면 됩니다.

 

전체 코드는 아래를 참고해주세요.

👨🏻‍💻 코드 ( Solution )

import math

def is_palindrome(num):
    result = False
    
    sqrt_num = math.sqrt(num)
    num = str(num)

    if float(int(sqrt_num)) == sqrt_num:
        sqrt_num = str(int(sqrt_num))

        if num == num[::-1] and sqrt_num == sqrt_num[::-1]:
            result = True
    return result

def squared_palindrome_number(num1, num2):
    cnt = 0
    
    for num in range(num1, num2 + 1):            
        if is_palindrome(num):
            cnt += 1
            
    return cnt


if __name__ == "__main__":
    for idx in range(1, int(input()) + 1):
        num1, num2 = map(int, input().split())
        
        result = squared_palindrome_number(num1, num2)
        
        print("#{} {}".format(idx, result))
 

GitHub - SOMJANG/CODINGTEST_PRACTICE: 1일 1문제 since 2020.02.07

1일 1문제 since 2020.02.07. Contribute to SOMJANG/CODINGTEST_PRACTICE development by creating an account on GitHub.

github.com

Comments