https://school.programmers.co.kr/learn/courses/30/lessons/120913
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
[문제 설명]
문자열 my_str과 n이 매개변수로 주어질 때, my_str을 길이 n씩 잘라서 저장한 배열을 return하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ my_str의 길이 ≤ 100
- 1 ≤ n ≤ my_str의 길이
- my_str은 알파벳 소문자, 대문자, 숫자로 이루어져 있습니다.
[나의 풀이]
아이디어
만약 24글자이고, n이 6이면
인덱스를 0:5 / 6:11 / 12:17 / 18:23으로 끊어야 함
=> 0*n:1*n-1 / 1*n:2*n-1 / 2*n:3*n-1 / 3*n:4*n-1
=> [0*n:1*n] / [1*n:2*n] / [2*n:3*n] / [3*n:4*n]
for문에서 i = 0부터 3까지 써야함
그런데 25글자라면?
for 문에서 i=0부터 4까지 써야함
def solution(my_str, n):
answer = []
if len(my_str) % n == 0:
for i in range(0,len(my_str)//n):
a = my_str[i*n:(i+1)*n]
answer.append(a)
else:
for i in range(0,len(my_str)//n+1):
a = my_str[i*n:(i+1)*n]
answer.append(a)
return answer
[다른 풀이] 굳이 if문으로 상황을 나누지 않아도 됐겠다는 생각이 든다
def solution(my_str, n):
return [my_str[i: i + n] for i in range(0, len(my_str), n)]
def solution(my_str, n):
answer = []
while my_str:
if len(my_str)>=n:
answer.append(my_str[:n])
my_str=my_str[n:]
elif len(my_str)<n:
answer.append(my_str)
my_str=[]
return answer
def solution(my_str, n):
answer = [my_str[i*n:(i+1)*n] for i in range((len(my_str)-1)//n+1)]
return answer
위의 코드들과 동작은 똑같다. 다만 슬라이싱의 범위를 직접 입력했을뿐
'프로그래머스 > 파이썬_입문' 카테고리의 다른 글
최댓값 만들기 (2) (0) | 2024.11.22 |
---|---|
직사각형 넓이 구하기 (0) | 2024.11.21 |
머쓱이보다 키 큰 사람 (0) | 2024.11.18 |
중복된 숫자 개수 (0) | 2024.11.18 |
7의 개수+특정 문자 개수 세기 (0) | 2024.11.18 |