컴퓨터는 잘못이 없다..

[알고리즘]BOJ_10988_팰린드롬인지 확인하기(파이썬 슬라이싱) 본문

공부/알고리즘(파이썬)

[알고리즘]BOJ_10988_팰린드롬인지 확인하기(파이썬 슬라이싱)

도토리까꿍v 2021. 6. 9. 13:08
Contents 접기

#문제 링크

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

 

10988번: 팰린드롬인지 확인하기

첫째 줄에 단어가 주어진다. 단어의 길이는 1보다 크거나 같고, 100보다 작거나 같으며, 알파벳 소문자로만 이루어져 있다.

www.acmicpc.net

 

#문제

https://www.acmicpc.net/problem/10988
팰린드롬인지 확인하기
시간 제한	메모리 제한	제출	정답	맞은 사람	정답 비율
1 초	256 MB	10247	6841	5943	68.539%

문제
알파벳 소문자로만 이루어진 단어가 주어진다. 이때, 이 단어가 팰린드롬인지 아닌지 확인하는 프로그램을 작성하시오.
팰린드롬이란 앞으로 읽을 때와 거꾸로 읽을 때 똑같은 단어를 말한다.
level, noon은 팰린드롬이고, baekjoon, online, judge는 팰린드롬이 아니다.

입력
첫째 줄에 단어가 주어진다. 단어의 길이는 1보다 크거나 같고, 
100보다 작거나 같으며, 알파벳 소문자로만 이루어져 있다.

출력
첫째 줄에 팰린드롬이면 1, 아니면 0을 출력한다.

예제 입력 1
level
예제 출력 1
1
예제 입력 2
baekjoon
예제 출력 2
0

 

#답안

import sys
input=sys.stdin.readline

#문자열을 입력받는다.
word=input().rstrip()

if word == word[::-1] :
    print(1)
else :
    print(0)

▲풀이

이 문제는 슬라이싱을 통해 풀면 빠르고 쉽게 풀 수 있다.

 

💩슬라이싱이란?

파이썬에서는 문자열 슬라이싱이라는 매우 편리한 기능을 제공한다. 무엇보다 내부적으로 매우 빠르게 동작한다.

위치를 지정하면 해당 위치의 배열 포인터를 얻게 되며 이를 통해 연결된 객체를 찾아 실제 값을 찾아낸다. 

이 과정은 매우 빠르게 진행되므로 ⭐문자열을 조작할 때는 항상 슬라이싱을 우선으로 사용하는 편이 속도 개선에 유리하다.

 

슬라이싱에 대한 자세한 내용은 여기를 참고하자!

[파이썬 알고리즘 인터뷰]6장_문자열 조작 01_유효한 펠린드롬(파이썬 isalnum(), lower(), re.sub()으로 문자열에서 특정문자 제거 ,deque 자료형, 슬라이싱 사용,pop(0)과 popleft의 시간복잡도) (tistory.com)

 

[파이썬 알고리즘 인터뷰]6장_문자열 조작 01_유효한 펠린드롬(파이썬 isalnum(), lower(), re.sub()으로

#이 포스팅에서 암기해야할 점 1. pop(0)의 시간복잡도는 O(N), 데크의 popleft()는 시간복잡도는 O(1), 둘의 기능은 같음! 2. s.isalnum() 숫자나 문자일때만 true리턴 3. s.lower() 소문자로 바꿔서 리턴 4. 데..

sjy1218vv.tistory.com

 

 

Comments