https://www.acmicpc.net/problem/6137
6137번: 문자열 생성
첫 번째 줄에 문자열 S의 길이 N이 주어진다. (N <= 2,000) 이후 N개의 줄에 S를 이루는 문자들이 주어진다.
www.acmicpc.net
투 포인터 문제
투 포인터를 이용하지 않으면 시간 상 풀릴 수 가 없다
초기에 재귀와 리스트의 pop을 섞어서 풀었는데 시간초과가 나옴..
정답은 투포인터로 이용해서 st 지점과 ed 지점을 옮기며 계산을 하면 된다
n = int(input())
s = []
for i in range(n):
s.append(input())
result = ''
st, ed = 0, n-1
while st <= ed:
if s[st] < s[ed]:
result += s[st]
st +=1
elif s[st] > s[ed]:
result += s[ed]
ed -=1
# 투 포인터 에 투포인터
else:
ST, ED = st, ed
tf = False
while ST <= ED:
if s[ST] < s[ED]:
result +=s[st]
st +=1
tf = True
break
elif s[ST] > s[ED]:
result += s[ed]
ed -=1
tf = True
break
else:
ST +=1
ED -=1
if not tf:
result += s[st]
st +=1
if len(result) >=80:
print(result)
result = ''
print(result)
'Algorithm > baekjoon' 카테고리의 다른 글
[파이썬]baekjoon 15810: 풍선 공장 (0) | 2023.02.16 |
---|---|
[파이썬]baekjoon 4446: ROT13 (0) | 2023.02.15 |
[파이썬]baekjoon 3187: 양치기 꿍 (0) | 2023.02.13 |
[파이썬]baekjoon 12904: A와 B (0) | 2023.02.10 |
[파이썬]baekjoon 12931: 두 배 더하기 (0) | 2023.02.10 |
댓글