본문 바로가기

알고리즘 공부/백준 > Python3

[백준 파이썬] #11721: 열 개씩 끊어 출력하기

https://www.acmicpc.net/problem/11721

 

11721번: 열 개씩 끊어 출력하기

첫째 줄에 단어가 주어진다. 단어는 알파벳 소문자와 대문자로만 이루어져 있으며, 길이는 100을 넘지 않는다. 길이가 0인 단어는 주어지지 않는다.

www.acmicpc.net

 

[문제 정리]

알파벳 소문자와 대문자로만 이루어진 길이가 N인 단어가 주어진다. 한 줄에 10글자씩 끊어서 출력하는 프로그램을 작성하시오.

 

[문제 접근]

문자열을 10자씩 끊어야 하므로 N[0:10], N[10:20] 이런 식으로 문자열 슬라이싱을 이용하면 되겠다.

 

 

[정답1]

 

1. 단어 N을 입력받는다.

2. for문을 돌면서 문자열을 10개씩 출력한다.

(len(N)-1)//10+1 : [1] len(N)에 -1을 한 이유는 ex) 9글자의 경우 len(N)//10=0, 10글자의 경우 len(N)//10=1이다. 그러나 9글자나 10글자나 같은 줄에서 끝난다. 그러므로 -1을 해주어 for문을 돌 때 같은 줄에서 끝나도록 해준다.  [2] (len(N)-1)//10에 +1을 한 이유는 for문의 특성상 종료값을 포함하지 않는다. ex) 19글자의 경우 len(N-1)//10=1이므로 +1을 해주지 않으면 for i in range(1)이므로 i에는 0만 들어가고 끝날 것이다. 즉 19글자 중 10글자만 출력하고 종료된다. 그러므로 +1을 해주어 for문을 제대로 돌아 문자열을 모두 출력하도록 한다.

 

 

정답1을 제출하고 글을 작성하는 도중 더 쉬운 방법이 떠올랐다.

이 방법이 위의 방법과 같은 시간이 걸리지만 더 이해하기 쉽고 간결한 코드여서 더 좋은 방법인 것 같다.

 

[정답2]

 

1. 단어 N을 입력받는다.

2. N!=''일 동안 while문을 돌면서 N[0:10]을 출력하고 그 뒤의 나머지인 N[10:]을 N에 넣는다. ex) N='abcd' N[0:10]='abcd'이기 때문에 이 코드가 가능하다.