본문 바로가기
🥇Problem Solving (psS2mj)/BOJ

[BOJ] 11721. 열 개씩 끊어 출력하기 (Python3)

by psS2mj 2021. 4. 20.
반응형

www.acmicpc.net/problem/11721 (level: Bronze II)

 

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

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

www.acmicpc.net


진짜 오랜만에 알고리즘 문제를 풀어봤다. (서로가 서로에게 희망이 되어주기 위해서^_^)

올해 초에 갤탭을 구입했으므로 앞으로는 갤탭을 잘 활용해볼 예정이다.

 

간단한 문제지만 이런 문제들부터 논리적으로 생각하는 연습을 하는게 중요하다고 생각해서 제대로 단계를 나눠서 틀을 짜봤다.

tmi :) index 쪽에 빨간색으로 덧씌워서 적은 메모는 처음엔 i=1, i=2로 적었다가 문제를 풀고난 후 i=0부터라는 것을 강조하기 위해 수정해봤다.

 

핵심은

1. 들어오는 input의 길이를 알아낼 것

2. 문제에서 주어진 10이라는 수를 기준으로 다르게 처리해줄 것

 

# date: 2021/04/20
# author: psS2mj
# brief: BOJ_11721_열 개씩 끊어 출력하기

import sys
input = sys.stdin.readline()
len = len(input)
if len < 10:
    print(input)
else:
    len = len//10
    for i in range(len):
        print(input[i*10:i*10+10])
    print(input[len*10:])

 

솔직히 입출력부터 다 까먹어서 실제 구현하는 데는 애 좀 먹었다.

한동안 파이썬으로 알고리즘 문제 풀었을 때보다 코드가 지저분 할 수도 있으나 오늘은 이게 최선~^_^

 

10 미만이면 바로 출력하고 끝나도록 했고,

10 이상일 때는 처음에 알아낸 길이를 이용해 for문을 몇 번 돌릴지 정해주고 (나누기, 몫을 이용) 돌만큼 돌았으면 나머지는 그냥 평범하게 출력해주면 끝.

 

처음엔 틀렸었는데, 그 이유는 내가 for문 안에서 문자열 슬라이싱을 할 때 [A:B]의 범위가 B를 포함한다고 착각하고 코드를 짰기 때문이었다. 즉, i*10+9로 구현을 했었고, 틀렸고, 출력을 다시 자세히 살펴보니 틀린 부분 1초컷으로 찾아낼 수 있었고, i*10+10로 고쳤고, 다시 제출했고, 맞혔다.

 

오랜만이라 헷갈릴 법도 했다.

그럼 앞으로 ㅍㅇㅌ

 

 

 

(+) 4/23 추가

# date: 2021/04/20
# author: psS2mj
# brief: BOJ_11721_열 개씩 끊어 출력하기

import sys
input = sys.stdin.readline()
len = len(input)//10
for i in range(len):
    print(input[i*10:i*10+10])
print(input[len*10:])

오랜만에 알고리즘 한 문제 풀었다는 것에 의의를 두려고 했으나, 막상 풀고 보니 기존에 len이 10 이상인지 아닌지 따져서 if와 else로 나눠 각각 로직을 수행하도록 한 것이 비효율적으로 느껴졌다.

 

그리고 오늘 다른 문제 풀다가 겸사겸사 이 문제 코드도 조금 더 세련되게 리팩토링(?) 해봤다.

어차피 len을 나눈 몫을 이용한다면 길이가 10 미만일 때 0이니까 else에 있는 로직을 그대로 써도 되겠다 싶어 조건문을 저기 어디 갖다 치우고 입력된 문자열의 길이를 구하면서 동시에 그 길이를 10으로 나눈 몫을 구해 아래 로직에서 활용하였다. - 끝 -

조금 더 쾌적해진 나의 코드 인증

반응형

'🥇Problem Solving (psS2mj) > BOJ' 카테고리의 다른 글

[BOJ] 11399. ATM (Python3)  (0) 2021.04.23
[BOJ] 11047. 동전 0 (Python3)  (0) 2021.04.23
[BOJ] 5543. 상근날드 (Python3)  (0) 2020.09.12
[BOJ] 3052. 나머지 (Python3)  (0) 2020.09.04
[BOJ] 2588. 곱셈 (Python3)  (0) 2020.09.01

댓글