나..너무 돌아갔다, 타임아웃도 안나고 에러도 안나고 성공은 했는데,,,
다른 사람들 풀이보고 살짝 현타가 왔다.🥱
크기가 작은 부분 문자열
from collections import deque
def solution(t, p):
answer = 0
list1 = []
deq = deque(t)
while len(deq) > len(p):
tmp =''
cnt = 0
while cnt < len(p):
tmp += deq[cnt]
cnt += 1
list1.append(int(tmp))
deq.popleft()
list1.append(int(t[-len(p):]))
for i in list1:
if i <= int(p):
answer +=1
return answer
list1.append(int(t[-len(p):]))
인덱싱이 중요한 포인트 였던거 같다. 문자열 거꾸로 출력하는 개념을 공부했다.
s = 'abcde'
s_reverse = '' # 기존 문자열을 역순으로 담아줄 빈 문자열 선언
for char in s:
s_reverse = char + s_reverse
print(s_reverse) # edcba
s = 'abcde'
s_list = list(s) # reverse 함수를 사용하기 위해 문자열을 list로 치환
s_list.reverse() # reverse 함수를 사용해 문자열 리스트를 거꾸로 뒤집음
print(''.join(s_list)) # 거꾸로 뒤집어진 리스트를 연결해서 출력
s = 'abcde'
print(''.join(reversed(s))) # 'edcba'
reversed는 reverse와는 달리 문자열에도 바로 적용이 가능하므로
(reverse는 list에만 사용 가능)
reversed(s)를 통해 문자열을 거꾸로 뒤집은 후 join으로 연결해 바로 출력해주었다.
s = 'abcde'
print(s[::-1]) # 'edcba'
문자열을 [::-1] 이라는 인덱스로 호출하면,
아주 단순하게 해당 문자열을 뒤집은 결과를 반환한다.
s = 'abcde'
print(s[3:0:-1]) # dcb
만약 [3:0:-1] 이라는 인덱스로 호출하면,
3번 인덱스부터 1번 인덱스까지(0번 까지가 아님) 역순으로 출력해준다.
s = 'abcde'
print(s[3::-1]) # dcba
[3::-1] 과 같이 출력하면 3번 인덱스부터 0번 인덱스까지 역순으로 출력해준다.
s = 'abcde'
print(s[4::-1]) # edcba
print(s[::-1]) # edcba
[4::-1] 은 4번 인덱스부터 0번 인덱스까지 역순으로 출력해주는데,
이 때 4번 인덱스가 마지막 인덱스라면 생략할 수 있다.
l = ['a', 'b', 'c', 'd', 'e']
print(l[::-1]) # ['e', 'd', 'c', 'b', 'a']
t = ('a', 'b', 'c', 'd', 'e')
print(t[::-1]) # ('e', 'd', 'c', 'b', 'a')
그래서 결과적으로 [::-1] 인덱스를 주면 전체 문자열을 역순으로 출력해주는 것이다.
문자열 뿐 아니라 리스트나 튜플에도 적용 가능하다.
def solution(t, p):
a = len(t) #t의 길이
b = len(p) #p의 길이
answer = 0
for i in range(0,a-b+1):
if int(t[i:i+b]) <= int(p):
answer += 1
return answer
-----------------------
def solution(t, p):
return len([1 for i in range(len(t)-len(p)+1) if t[i:i+len(p)] <= p])