Home [Python] 백준 11721번 : 열 개씩 끊어 출력하기
Post
Cancel

[Python] 백준 11721번 : 열 개씩 끊어 출력하기

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

문자열 슬라이싱 개념을 한번 더 되짚어볼 수 있었다.

Ref.

문자열 인덱싱 및 슬라이싱

This post is licensed under CC BY 4.0 by the author.

[Python] 백준 11719번 : 그대로 출력하기

[Python] 백준 2442번 : 별 찍기