*파이썬 인덱스
예) 크기가 5인 리스트
a[0] | a[1] | a[2] | a[3] | a[4] |
a[-5] | a[-4] | a[-3] | a[-2] | a[-1] |
print(s[-1])
*문자열 슬라이싱으로 뒤집기
문자열[시작:끝] 문자열을 앞에서부터 하나씩 슬라이싱 해서 새로운 문자열을 만든다.
문자열[시작:끝:규칙] 규칙은 슬라이싱을 하는 규칙입니다. 1이 디폴트값이며, 1이 들어가게 되면 문자열을 앞에서부터 하나씩 잘라서 새로운 문자열을 만드는 것이다.
-1 을 넣어 뒤에서부터 잘라서 문자열을 뒤집을 수 있다.
print(s[::-1])
import sys
sys.stdin=open("input.txt", "r")
n=int(input())
for i in range (0,n):
# 문자열이 s에 들어온것
s=input()
s=s.upper()
#제일 뒷자리부터 한단계씩 작아지면서 문자를 바꿔라
print(s[::-1])
두번째 네번째 단어에서 뒤집힌 것을 확인할 수 있다.
*본 문제는 인프런 김태원 강사님의 파이썬 알고리즘 문제풀이 강의에 기반합니다.
문제 점수계산
N개의 문자열 데이터를 입력받아 앞에서 읽을 때나 같은 경우(회문 문자열)이면 YES를 출력하고 문자열이 아니면 NO를 출력하는 프로그램을 작성한다.
단 회문의 검사를 할 때 대소문자를 구분하지 않습니다.
-입력설명
첫 줄에 정수 N (1<=N<=200)이 주어지고, 그 다음 줄 부터 N개의 단어가 입력된다.
각, 단어의 길이는 100을 넘지 않는다.
-출력설명
각 줄에 해당 문자열의 결과를 YES 또는 NO를 출력한다
-입력예제1
5
level
moon
abcba
soon
gooG
-출력예제1
#1 YES
#2 NO
#3 YES
#4 NO
#5 YES
풀이
(구현)
import sys
sys.stdin=open("input.txt", "r")
n=int(input())
for i in range (0,n):
# 문자열이 s에 들어온것
s=input()
s=s.upper()
size=len(s)
# 문자열 대문자화로 통일하기 구별하지 않는다. 했으니
for j in range(size//2):
# 회문이 아닌것
if s[j]!=s[-1-j]:
print("#%d NO" %(i+1))
break
else:
# 회문이 아닌것
print("#%d YES" %(i+1))
파이썬스러운? 코드
import sys
sys.stdin=open("input.txt", "r")
n=int(input())
for i in range (0,n):
# 문자열이 s에 들어온것
s=input()
s=s.upper()
if s==s[::-1]:
#회문인지
print("#%d YES" %(i+1))
else:
print("#%d NO" %(i+1))
'알고리즘? > 기본3 탐색&시뮬레이션(string, 1차원 2차원 리스트 탐색)' 카테고리의 다른 글
6. 격자판 최대합 (1) | 2023.05.10 |
---|---|
5. 수들의 합 (0) | 2023.05.09 |
4. 두 리스트 합치기 (0) | 2023.05.09 |
3. 카드 역배치(정올 기출) (pop) (0) | 2023.05.08 |
2. 숫자만 추출 (isdecimal, isdigit) , 숫자화 시키는 방법 (0) | 2023.05.08 |