알고리즘/백준(BOJ) 문제 풀이

[Python]백준 #1259 팰린드롬수(class2+)

gangmini 2022. 3. 13. 02:11
반응형

https://www.acmicpc.net/problem/1259

 

1259번: 팰린드롬수

입력은 여러 개의 테스트 케이스로 이루어져 있으며, 각 줄마다 1 이상 99999 이하의 정수가 주어진다. 입력의 마지막 줄에는 0이 주어지며, 이 줄은 문제에 포함되지 않는다.

www.acmicpc.net

 

 알고리즘

  • 구현
  • 문자열

✔ 접근방법

1. 특정 문자가 나올 때까지 반복 하므로 while문 사용

2. 첫번째 인덱스, 마지막 인덱스를 시작으로 인덱스를 1씩 이동해주며 비교

   인덱스가 같아지거나(인덱스가 홀수개), 역순으로 바뀌면(인덱스가 짝수개) yes로 검사 종료

3. 계속 런타임 에러가 나서 봤더니 논리연산자를 | 를 쓴 것이 문제

 

💡 논리연산자는 and / or 로 써줘야 함 (|, & 는 파이참에서는 에러는 안 나지만 구문 에러인 것은 맞는듯 함)

 

  코드

num_list=[]
while(1):
    n = input()
    if(n =='0'):
        break
    num_list.append(n)
for s in num_list:
    start = 0
    end = len(s) - 1
    while(1):
        if(s[start]!=s[end]):
            print("no")
            break
        start +=1
        end -= 1
        if(start>=end): #같은 인덱스이거나 인덱스가 역순으로 바뀌면 검사 완료
            print("yes")
            break

✔ 배운점/아쉬운점

1. 슬라이싱을 통해 더 간단하게 구현 가능 

for i in num_list:
    if(i == i[::-1]):
        print("yes")
    else:
        print("no")

2. 논리연산자는 and / or 로 써줘야 함 (|, & 는 파이참에서는 에러는 안 나지만 구문 에러인 것은 맞는듯 함)

반응형