반응형
작성 코드
def solution(t, p):
cnt = 0
if len(p) == 1: #if 구문과 else 구문이 동일하게 동작하므로 1자릿수에 대한 exception을 작성해 줄 필요가 없었음
for i in range(len(t)):
if int(t[i]) <= int(p):
cnt += 1
else:
for i in range(len(t)-len(p)+1):
if int(t[i:len(p)+i]) <= int(p):
cnt += 1
return cnt
개선안
def solution(t, p):
cnt = 0
for i in range(len(t)-len(p)+1):
if int(t[i:len(p)+i]) <= int(p):
cnt += 1
return cnt
시간복잡도 : O(N)
중첩문이 한개만 들어갔으므로
과정
- 슬라이싱에 관한 문제
- 개선안 도출 과정 : 처음에 length를 산정하는 과정에서 len(t) - len(p)로 잘못 계산하는 바람에 한자릿수에 대한 exception을 따로 작성하였으나 마지막에 +1을 더해주어야 하는 것을 알아차리고 더해줬음. 그래서 1에 대한 exception 핸들링을 하지 않아도 되게 됨
문자열 슬라이싱
t = "500220839878"
print(t[0:4])
print(t[:4])
# 5002, index number 3까지
반응형
'알고리즘' 카테고리의 다른 글
(프로그래머스) 42. 삼총사 (1) | 2024.02.28 |
---|---|
(프로그래머스) 41. 이상한 문자 만들기 (0) | 2024.02.28 |
알고리즘) 백준 11047번 동전 0 (0) | 2020.01.22 |
알고리즘) 백준 11399번 ATM (0) | 2020.01.22 |
알고리즘) 백준 8958번 OX 퀴즈 (0) | 2020.01.21 |