Test/Python(20220101~)
프로그래머스.L0.잘라서배열로저장하기
kiostory
2022. 10. 8. 23:20
문제 설명
문자열 my_str과 n이 매개변수로 주어질 때, my_str을 길이 n씩 잘라서 저장한 배열을 return하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ my_str의 길이 ≤ 100
- 1 ≤ n ≤ my_str의 길이
- my_str은 알파벳 소문자, 대문자, 숫자로 이루어져 있습니다.
입출력 예
my_str : n : result
"abc1Addfggg4556b" | 6 | ["abc1Ad", "dfggg4", "556b"] |
"abcdef123" | 3 | ["abc", "def", "123"] |
* 첫 번째 생각
def solution(my_str, n):
import math
answer = []
for _ in range(math.ceil(len(my_str)/n)):
answer.append(my_str[:n])
my_str = my_str[n:]
return answer
- 문자열을 n으로 나누어서 몇 번 잘라야 하는지 계산 (반올림을 위해 math 모듈의 ceil 사용
cf. math 모듈이 꼭 필요한걸까
* 두 번째 생각
math 모듈없이 작성
def solution(my_str, n):
answer = []
for _ in range(0, len(my_str), n):
answer.append(my_str[:n])
my_str = my_str[n:]
return answer
range(start, stop, step)
for _ in range(len(my_str)//n)
>> 이 경우 몫만 취하게 되므로 16문자열을 6개씩 나누면 2쩜 얼마의 목이라 스탑값이 2 (0,1)
>> 0-5, 6-11 다음의 12-15까지의 문자를 반영하지 않아 실패
for _ in range(math.ceil(len(my_str)/n))
>> 나눈 값의 소수점 값을 올림 해버려서 12-15까지의 문자를 반영하게 했으나, math 함수와 ceil(올림)을 모르면 불가하므로 패스
for _ in range(0, len(my_str), n)
>> 스텝값을 넣어서 16문자열이고 6개씩일 경우 0,6,12 세 번동안 for문은 돌고
도는 동안 6개씩 취하고
처리할 문자열을 앞 6개씩 제외하고 끝까지 재정의하도록 함