알고리즘

백준 11721 열 개씩 끊어 출력하기 파이썬 풀이

물에빠진사람 2024. 1. 17. 02:50
반응형

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

 

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

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

www.acmicpc.net

 

접근법

입력받은 문자를 알파벳 단위로 리스트에 할당한다. 인덱스 0부터 출력하다 10번째 되는 곳에서 "\n"출력

 

코드1

sentence = [x for x in input()]
for i in range(len(sentence)) :
    print(sentence[i], end="")
    if (i + 1) % 10 == 0:    # i가 0부터 시작하기 때문에 위해 +1을 해주었다
        print()

 

파이썬은 print()에 기본적으로 줄바꿈("\n")이 되기 때문에 print()를 사용해서 1부터 시작해서 10번째 되는 위치, 10으로 나눴을때, 나머지가 없는 위치에서 print()를 작성해 주었다. 

 

파이썬에 있는 리스트 데이터타입에는 신기한 접근법이 있는데 바로 슬라이싱이다. 파이썬이 익숙하지 않아서 이 방법을 피하고 싶어서 코드1처럼 풀었는데 굳이굳이 하기 싫은걸 해봐야 실력이 는다고 했다.

 

코드2 : 효율성을 높히기 위한 슬라이싱 사용

sentence = input()
print_size = 10
for i in range(0, len(sentence), print_size):
    print(sentence[i: i + print_size])

 

슬라이싱의 규칙은 이러하다. slicing[start index: ending_index : steps]이다. 괄호( [ ] )안에 시작할 인덱스 : 끝낼 인덱스 : 그리고 간격이다. 주의해야할 점은 끝낼 인덱스는 늘 미만이라고 생각해야 한다는 점이다. 예를들어 sentence[1 : 10 : 2]이면 index 0부터 9까지(0, 1, 2, 3, 4, 5, 6, 7, 8, 9) 2칸을 뛰어 넘으라는 것이다. 이 경우에 02468이 된다.

 

간단한 문제라 안풀려고 했는데 어디 글에서 본 내용에서 말하길 입출력 알고리즘 기초 문제라 반드시 풀어보라고 해서 풀었다.

반응형