a부터 좌우로 하나씩 연속되는 알파뱃을 붙혀가는 규칙.
s가 규칙으로 만들어진 문자열이면 YES를 출력.
얼마전 현대모비스 알고리즘 대회 2번?의 열화판
당시는 deque로 풀었지만 이번에는 twopointer로 양끝에서부터 한 규칙씩 거슬러 올라가 마지막에 a가 남는 것까지 확인하는 전략을 세웠습니다.
최초 시작은 start로 총 문자열 길이에서 소문자 a의 아스키코드 넘버만큼 더해주고 a를 제외하는 의미에서 1을 빼주면 마지막 문자의 아스키코드 넘버가 됩니다. 거기서부터 확인해주면 됩니다.
import sys
input = sys.stdin.readline
for test in range(int(input())):
s = input().rstrip()
left = 0
right = len(s) - 1
start = len(s) - 1 + ord('a')
while left <= right:
flag = 0
if s[right] == chr(start):
right -= 1
start -= 1
flag = 1
elif s[left] == chr(start):
left += 1
start -= 1
flag = 1
if not flag:
print('NO')
break
else:
print('YES')
'practivceAlgorithm > codeforce' 카테고리의 다른 글
[codeforce][Python] #719 A.Do Not Be Distracted! (0) | 2021.10.17 |
---|---|
[Codefroce][Python] div.3 #731 - E. Air Conditioners (0) | 2021.10.03 |
[Codefroce][Python] div.3 #731 - D. Co-growing Sequence (0) | 2021.10.03 |
[Codefroce][Python] div.3 #731 - C. Pair Programming (0) | 2021.10.03 |
[Codefroce][Python] div.3 #731 - A. Shortest Path with Obstacle (0) | 2021.10.03 |