먼저 내가 쓴 코드이다.
def solution(t, p):
answer = 0
t=str(t)
p=str(p)
nums=[]
for i in range(len(t)-len(p)+1):
nums.append(t[i:i+len(p)])
for num in nums:
if int(num)<=int(p):
answer+=1
return answer
1. int에는 len() 메소드를 쓸 수 없어서 str()로 숫자 -> 문자로 형태를 바꿔주었다.
2. 이후 반복문으로 len(t)-len(p)+1까지 반복하여 문자열을 p 길이로 슬라이싱해준다.
범위가 len(t)-len(p)+1 이유는 그냥 len(t)로 하면 끝부분에서 p만큼의 문자열 길이가 나오지 않아 오류날 수 있기 때문이다.
예를 들어 t=6427와 q=12이 있을때 len(t)를 하여 7까지 가면 두 자리 수를 구하지 못한다.
3. nums에 슬라이싱한 문자열을 추가한다. t[i:i+len(p)]를 하여 i부터 p의 길이만큼 자른다.
4. 만들어진 nums의 요소만큼 반복하여 nums에 있는 요소가 큰지 p가 큰지 비교한다.
이때, p와 t를 str로 만들어두었기 때문에 다시 int형으로 형변환을 해주어야한다.
아래는 다른 사람들의 코드이다. 대충 비슷해서 뿌듯!!
def solution(t, p):
answer = 0
t_len, p_len = len(t), len(p)
for i in range(t_len - p_len + 1) :
num = int(t[i:i+p_len])
if num <= int(p) :
answer += 1
return answer
'pccp 대비 교육 문제 풀이 - 프로그래머스' 카테고리의 다른 글
파트6. 정렬과 탐색 - [Sorting] 실습문제1 (A로 B만들기 120886번) python (0) | 2025.01.24 |
---|---|
파트5. 해시 - 실습문제1 (빼빼로데이) python (0) | 2025.01.24 |
파트4. 배열 - 실습문제2 (자연수 뒤집어 배열로 만들기 12932번) python (0) | 2025.01.24 |
파트4. 배열 - 실습문제1 (n개 간격의 원소들 181888번) python (0) | 2025.01.23 |
파트3. 문자열 - 실습문제1 (QR code 181903번) python (0) | 2025.01.23 |