Problem
https://www.acmicpc.net/problem/11721
Solution
이 문제는 문자열 인덱싱과 슬라이싱을 활용하여 풀었다. 주어진 문자열의 길이를 10으로 나눈 몫과 나머지를 이용해서 10개 단위로 쪼개어 출력하였다.
오답코드
1
2
3
4
5
6
7
8
arr = input()
n = len(arr)
q = n//10
r = n%10
for i in range(q):
print(arr[10*i:10*(i+1)])
print(arr[-r:])
이 코드는 길이가 10인 문자열이 입력된 경우 해당 문자열이 2번 출력되는 버그가 있어서 오답처리됐다. n에 10이 저장되면 q와 r에 각각 1과 0이 저장되는데, for문에어 이미 문자열을 다 출력하였음에도 마지막 줄에서 print(arr[0:]
로 문자열이 한번 더 출력되게 된다.
정답코드
1
2
3
4
5
6
7
8
9
arr = input()
n = len(arr)
q = n//10
r = n%10
for i in range(q):
print(arr[10*i:10*(i+1)])
if r:
print(arr[-r:])
위 코드에 if문을 추가해서 문자열의 길이가 10의 배수가 아닐 때에만 마지막 줄이 실행되도록 하였다.
Memo
문자열 슬라이싱 개념을 한번 더 되짚어볼 수 있었다.