https://www.acmicpc.net/problem/11721
[문제 정리]
알파벳 소문자와 대문자로만 이루어진 길이가 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'이기 때문에 이 코드가 가능하다.
'알고리즘 공부 > 백준 > Python3' 카테고리의 다른 글
[백준 파이썬] #10039: 평균 점수 (0) | 2021.02.14 |
---|---|
[백준 파이썬] #1264: 모음의 개수 (0) | 2021.02.12 |
[백준 파이썬] #10845: 큐 (0) | 2021.02.09 |
[백준 파이썬] #1924: 2007년 (0) | 2021.02.07 |
[백준 파이썬] #2522: 별 찍기-12 (0) | 2021.02.07 |