해설
t랑 p가 숫자로된 문자열로 이루어져있고
p의 길이 만큼 t를 연속된 수로 자른다.
예를들어
t = '3141592'가 있고
p = '271'이렇게 있으면
p의 길이만큼 t를 앞에서 부터 연속적으로 자른다.
[314,141,415,159,592]
이런식으로
그리고 p보다 작거나 같은 게 몇 개 있는지 출력하는 코드를 짜면 된다.
코드
def solution(t, p):
answer = []
for i in range(len(t)-len(p)+1):
answer.append(int(t[i:i+len(p)]))
result = list(filter((lambda x : x <= int(p)), answer))
return len(result)
먼저 문자열을 자르는 걸 고민하면
인덱싱을 이용해서 자르는 방법을 떠올렸다.
그럼 인덱싱에 들어갈 인덱스는 어떤걸 넣을까 고민했다.
첫번째 인덱스에는 0,1,2,3,4,5이렇게 들어가야할 것 같고
마지막 인덱스는 만약에 잘라야 하는 길이가 3이라면 적어도 뒤에 2개는 남겨놔야 연속된 3자리 숫자를 만들 수 있으니 또한, 앞 인덱스에 따라 변하니까 t의 길이에서 p의 길이를 빼고 +1을 하면 잘라야 하는 길이를 고려해서 인덱스를 고려할 수 있었다.
그래서
for i in range(len(t)-len(p)+1):
t[i:i+len(p)]
이렇게 코드를 짰다.
그리고 이렇게 만들어진 문자열을 리스트에 넣어놓고, filter함수와 람다식을 사용하여 result에 p보다 작은 숫자들을 비교해서 넣고 len을 구했다.
'IT 공부 > 코딩테스트' 카테고리의 다른 글
[프로그래머스 level1] 명예의 전당(1) - pyhon3 (0) | 2023.08.07 |
---|---|
[프로그래머스 level1] 추억 점수 (0) | 2023.08.06 |
[프로그래머스 level1] 삼총사 (0) | 2023.07.31 |
[프로그래머스 level1] 달리기 경주 (실패 - 시간초과) (0) | 2023.07.30 |
[백준 9295번] 주사위 - 파이썬 (0) | 2023.07.30 |