프로그래머스 Lv1 문제입니다. 실전에 대비하기 위해 30분 시간제한을 두고 풀었습니다.
문제
https://school.programmers.co.kr/learn/courses/30/lessons/147355
[나의 풀이]
⌛ 6분 소요
def solution(t, p):
answer = 0
len_t = len(t)
len_p = len(p)
for i in range(len_t-len_p+1):
if t[i:i+len_p] <= p:
answer += 1
return answer
입력된 문자열(t)의 부분문자열(연속된 부분 문자열) 중 문자열(p)보다 작거나 같은 문자열의 갯수를 출력하는 문제입니다. 어렵지 않게 구현할 수 있었습니다.🐰🐰🐰
[다른 사람의 풀이1]
def solution(t, p):
return sum([int(t[i:i+len(p)]) <= int(p) for i in range(len(t)-len(p)+1)])
같은 원리의 풀이입니다. list comprehension을 활용하여 한줄로 간결히 구현한 방식입니다.
🐬🐬🐬
[다른 사람의 풀이2]
def solution(t, p):
idx=len(p)
arr=[]
cnt=0
for i in range(len(t)-idx+1):
arr.append(t[i:i+idx])
for i in range(len(arr)):
if int(arr[i])<=int(p):
cnt+=1
answer = cnt
return answer
또 다른 방식으로는 부분문자열의 모든 케이스를 먼저 저장하고 p와 대소관계를 비교하는 방식이 있었습니다.🐱🐱🐱
감사합니다/