오뚝이개발자

[백준 1259] 팰린드롬 수 본문

코딩 테스트/백준

[백준 1259] 팰린드롬 수

땅어 2021. 9. 20. 15:49
728x90
300x250

 

 

문제


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

 

1259번: 팰린드롬수

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

www.acmicpc.net

 

 

나의 풀이


양끝에서부터 하나씩 이동시켜가면서 서로 문자를 비교해보면 된다. 왼쪽에서 오른쪽으로 가는 포인터를 l, 오른쪽에서 왼쪽으로 가는 포인터를 r이라고 하자.(two pointer 방식) l = 0, r = len(a)-1로 초기화 해주고 a[l]과 a[r]을 서로 비교해준다.

  • a[l] == a[r] -> l += 1, r -= 1
  • a[l] != a[r] -> print("no")하고 break

여기서 종료조건은 l<=r이다. 문자의 길이가 홀수인 경우 두 포인터 l,r은 중앙 자리에서 끝난다(l==r). 하지만 문자의 길이가 짝수인 경우 l과 r은 역전되어 마지막엔 l이 r보다 1 큰 상태가 된다.(121과 1221의 경우로 시뮬레이션 해보면 이해가 빠를 것이다.)

 

코드


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

while True:
    a = input()
    if a == '0':
        break
    l, r = 0, len(a)-1
    while l<r:
        if a[l]!=a[r]:
            print("no")
            break
        else:
            l += 1
            r -= 1
    if l>=r:
        print("yes")

 

 

 

728x90
300x250

'코딩 테스트 > 백준' 카테고리의 다른 글

[백준 13549] 숨바꼭질 3  (1) 2022.04.02
[백준 1463] 1로 만들기  (0) 2021.10.04
[백준 1013] Contact  (0) 2021.09.20
유레카 이론  (0) 2021.07.13
[백준 2252] 줄 세우기  (0) 2021.07.04
Comments