본문 바로가기

알고리즘/Python

[Python | SWEA] D3-1217, 10570

1217. [S/W 문제해결 기본] 4일차 - 거듭 제곱

https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=3&contestProbId=AV14dUIaAAUCFAYD&categoryId=AV14dUIaAAUCFAYD&categoryType=CODE&problemTitle=&orderBy=PASS_RATE&selectCodeLang=PYTHON&select-1=3&pageSize=10&pageIndex=1 

 

SW Expert Academy

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

swexpertacademy.com

 

문제

다음과 같이 두 개의 숫자 N, M이 주어질 때, N의 M 거듭제곱 값을 구하는 프로그램을 재귀호출을 이용하여 구현해 보아라.

2 5 = 2 X 2 X 2 X 2 X 2 = 32
3 6 = 3 X 3 X 3 X 3 X 3 X 3 = 729

 

제출 답안

n(밑), m(지수)이 입력되었을 때, m = 1일 될 때까지 m의 값을 1씩 빼면서 재귀 호출 

def zegop(n,m):
    if m==0:
        return 1
    else:
        return n*zegop(n,m-1)

for test_case in range(1, 11):
    input()
    n, m = map(int, input().split())
    result = zegop(n, m)
    print(f"#{test_case} {result}")

 


10570. 제곱 팰린드롬 수

https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=3&contestProbId=AXO72aaqPrcDFAXS&categoryId=AXO72aaqPrcDFAXS&categoryType=CODE&problemTitle=&orderBy=PASS_RATE&selectCodeLang=PYTHON&select-1=3&pageSize=10&pageIndex=1 

 

SW Expert Academy

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

swexpertacademy.com

 

문제

앞으로 읽어도 뒤로 읽어도 똑같은 문자열을 팰린드롬 혹은 회문이라고 부른다. 어떠한 실수 N이 양의 정수이며, 십진수로 표현했을 때 팰린드롬이면 이 수를 팰린드롬 수라고 부른다.

어떠한 양의 정수 N에 대해서, N과 √N이 모두 팰린드롬이면 이 수를 제곱 팰린드롬 수 라고 부른다.

예를 들어, 121은 제곱 팰린드롬 수인데, 121이 팰린드롬이며, 121의 제곱근인 11 역시 팰린드롬이기 때문이다.

 

A 이상 B 이하 제곱 팰린드롬 수는 모두 몇 개인가?

 

제출 답안

T = int(input())
for test_case in range(1, T+1):
    a, b = map(int, input().split())
    total = 0

    for i in range(a, b+1):
        # 1. 정수 i 회문 확인
        # 2. 정수 i가 제곱수인지 확인
        # 3. 루트i의 회문 확인
        if str(i)==str(i)[::-1] and (i**0.5)%1 == 0 and str(int(i**0.5))==str(int(i**0.5))[::-1]:
            total += 1

    print(f"#{test_case} {total}")

 

개선 답안

for tc in range(int(input())):
    A, B = map(int, input().split())
    cnt = 0
    for i in range(A, B + 1):
        C = i ** (1 / 2)
        if C == int(C):  # 제곱근이 정수일 때
            i = str(i)
            C = str(int(C))
            if i == i[::-1] and C == C[::-1]:
                cnt += 1

    print(f'#{tc + 1} {cnt}')

 

참고 자료

https://deok2kim.tistory.com/241

 

[python] SWEA - 10570. 제곱 팰린드롬 수

🤔문제 해결 lv3 | 문자열 💨 제곱수이므로 제곱근이 정수일 때만 계산한다. 💨 정수와 그 제곱근을 문자로 만들어 뒤집고, 뒤집기전과 같은지 확인한다. 💻소스 코드 for tc in range(int(input())): A,

deok2kim.tistory.com