본문 바로가기
CS/알고리즘

백준 11721, 2742

by 데브겸 2023. 9. 22.

 

11721

처음 풀이

mytext = input()
x = len(mytext) // 10
y = len(mytext) % 10

for i in range(x):
    print(mytext[0+i*10:10+i*10])
     
print(mytext[x*10:])

 

하지만 이후 좀 더 공부해보니 나머지(y)가 0인 경우가 있을 수 있음. 따라서 if y로 한 번 더 처리해줘야 함

mytext = input()
x = len(mytext) // 10
y = len(mytext) % 10

for i in range(x):
    print(mytext[0+i*10:10+i*10])
    
if y:    
    print(mytext[x*10:])

 

추가

아래와 같이 range를 활용해 푸는 방법도 있었음. 

n = input()

for i in range(0, len(n), 10):
    print(n[1:1+10])

 

원래 문자열의 길이보다 더 큰 범위를 설정하더라도 오류가 나지 않고 graceful하게 처리해주기 때문에 가능한 것 같음

my_string = "Hello, World!"
substring = my_string[5:20]
print(substring)

# 출력 - , World!

 

 

2742

파이썬의 reversed를 사용하여 거꾸로 출력하는 것도 가능함

n = int(input())

for i in reversed(range(1, n+1)):
    print(i)

 

reversed는 리스트, 튜플, 문자열 등 여러 자료구조를 받을 수 있음. 반복자 타입을 활용하기 때문에 메모리 사용 측면에서 좀 더 이점이 있다고 함. 아래 글 참고해보면 좀 더 자세히 알 수 있음! (daleseo님과 inpadev님의 블로그는 항상 볼때마다 신기함... 어떻게 모든 내용이 다 있지? 이런 느낌)

https://www.daleseo.com/python-reversed/

 

파이썬의 reversed() 함수로 거꾸로 루프 돌리기 (vs. slicing 연산자 & reverse() 함수)

Engineering Blog by Dale Seo

www.daleseo.com