문제 링크:https://school.programmers.co.kr/learn/courses/30/lessons/120913#
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
처음 작성한 코드
- 리턴값을 list로 작성하기 위해 list 컴프리헨션으로 작성한다.
- 문자열을 n간격으로 자르기 위해 변수 i에 대해 i*n부터 i*n+n-1까지 자르게 설정한다.
- 변수 i를 슬라이싱의 횟수로 범위를 정한다.
def solution(my_str, n):
answer = [my_str[i*n:i*n+n] for i in range((len(my_str)+n-1)//n)]
return answer
# 입출력 예시
print(solution("abc1Addfggg4556b", 6))
print(solution("abcdef123", 3))
막상 작성해보니 슬라이싱에 필요한 변수들의 사용이 깔끔하지 않다고 느꼈다.
다른 코드
[코드1]
- 변수 i의 값을 n간격으로 증가시키게 하여 변수들의 사용을 보기 쉽게 변경하였다.
def solution(my_str, n):
answer = [my_str[i: i + n] for i in range(0, len(my_str), n)]
return answer
이런 방법 말고 map과 join 함수를 사용하는 방법도 있지만, 가독성이나 효율측면에서 좋아 보이진 않아 보인다.
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[Programmers][Python] 대충 만든 자판 (0) | 2023.02.27 |
---|---|
[Programmers][Python] 문자열 밀기 (0) | 2023.02.25 |
[Programmers][Python] 진료순서 정하기 (0) | 2023.02.23 |
[Programmers][Python] K의 개수 (0) | 2023.02.22 |
[Programmers][Python] 가까운 수 (0) | 2023.02.21 |