[브론즈1]백준 1259번(팰린드롬수) - 코테공부 32일차(2025.02.24)

2025. 2. 24. 10:15
반응형

문제유형

문자열

풀이 방법 도출 과정

1. 앞에서 읽어도 같고 뒤에서 읽어도 같은 수를 찾는 문제

2. 그냥 숫자를 뒤집어 놓고 맞는 것을 고르면 된다. 단, 문자열로 사용해야한다. 

시간 복잡도

시간 복잡도는 N(A)이다. 

코드 및 간단설명

문자열의 특성을 활용하였다. 

while True:
    A = list(map(int, input().strip()))  # 입력을 문자열로 받아서 리스트 변환
    if A == [0]:  # 종료 조건
        break

    if A == A[::-1]:  # 리스트를 뒤집어 비교
        print('yes')
    else:
        print('no')

다른 풀이

1)  문자열의 앞뒤를 한 번에 비교

아래 코드는 리스트 전체를 뒤집어 비교하는 대신 문자열의 앞뒤를 한 번에 비교하여 필요할 때는 바로 종료할 수 있으므로 평균적으로 더 빠르다. 

while True:
    s = input().strip()  # 입력받은 문자열 그대로 사용
    if s == "0":         # 종료 조건: 문자열 "0"이 입력되면 종료
        break

    is_palindrome = True
    n = len(s)
    for i in range(n // 2):
        if s[i] != s[n - 1 - i]:
            is_palindrome = False
            break

    print("yes" if is_palindrome else "no")
반응형

BELATED ARTICLES

more