파이썬에서 하나의 문자열을 행당 K개의 문자를 가지는 행렬(매트릭스) 형태로 변환해야 하는 경우가 있습니다. 이를 위해서는 문자열과 K 값을 매개변수로 받는 함수를 정의하고, 간단한 반복문과 나머지 연산자(%), 그리고 append() 메서드를 활용하면 됩니다.
동작 원리
핵심 아이디어는 다음과 같습니다.
- 인덱스가 K의 배수일 때마다 새로운 행을 시작합니다.
- 현재 인덱스부터 K개의 문자를 잘라내어(substring) 한 행으로 만듭니다.
- 각 행의 문자들을 공백으로 구분하여 출력합니다.
예제 코드
아래는 실제 구현 예시입니다.
print("함수 정의 시작")
def convert_my_string(my_string, my_k):
for index in range(len(my_string)):
if index % my_k == 0:
sub = my_string[index:index+my_k]
my_list = []
for j in sub:
my_list.append(j)
print(' '.join(my_list))
print("함수 정의 끝")
my_string = "PythonCode&Learn&ObjectOriented"
print("입력 문자열 : ")
print(my_string)
K = 3
print("K 값 :")
print(K)
print("실행 결과 :")
print(convert_my_string(my_string, K))실행 결과
위 코드를 실행하면 다음과 같은 출력이 나타납니다.
함수 정의 시작 함수 정의 끝 입력 문자열 : PythonCode&Learn&ObjectOriented K 값 : 3 실행 결과 : P y t h o n C o d e & L e a r n & O b j e c t O r i e n t e d None
코드 설명
문자열과 K 값을 매개변수로 받아 결과를 출력하는 함수를 정의합니다.
반복문을 통해 문자열의 각 인덱스를 순회하면서, 인덱스가 K로 나누어 떨어질 때마다 새로운 행을 시작합니다.
슬라이싱(
index:index+my_k)을 사용하여 현재 위치에서 K개의 문자를 추출한 뒤, 리스트에 담았다가' '.join()으로 연결해 출력합니다.함수 외부에서 테스트용 문자열과 K 값(여기서는 3)을 정의하고 콘솔에 표시합니다.
정의된 함수에 인자를 전달하여 호출하고, 그 결과를 콘솔에 출력합니다. 함수 내부에서 명시적인 반환값이 없으므로 마지막에
None이 함께 출력됩니다.
참고: 더 간단한 대안 방법
리스트 컴프리헨션(list comprehension)을 활용하면 같은 기능을 더욱 간결하게 구현할 수 있습니다.
def convert_string_v2(my_string, k):
return [my_string[i:i+k] for i in range(0, len(my_string), k)]
result = convert_string_v2("PythonCode&Learn&ObjectOriented", 3)
for row in result:
print(' '.join(row))이 방식은 슬라이싱 범위를 range(0, len(my_string), k)로 지정하여 K 간격으로 문자열을 자르므로, 불필요한 조건문 없이 깔끔하게 처리할 수 있다는 장점이 있습니다.