단어 배열을 받고, 단어의 평균 길이를 출력하는 문제이다.
조건이 좀 까다로워서 여러번 실패를 했지만, 그래도 어찌어찌 구현을 했다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
#wordlength
import sys
def wordlength(line):
while len(line) > 0:
if word[-1] == '-' and locword[0] != '-': # 문제의 조건
word = word[:-1] + locword # 전 입력의 '-' 부분은 제외함
else:
word = word + ' ' + locword # 빈칸을 기준으로 나눔
word = word.replace('-', ' ').split(' ') # 빈칸으로 바꾸고 자르기
wnum = 0 # 단어 수
alphanum = 0 # 글자 수
for k in word:
if not k: # 비어있다면 넘어감
continue
wnum += 1
alphanum += len(k)
print("{0:.3f}".format(round(alphanum / wnum, 3)))
for i in range(case):
line = []
for j in range(linenum):
wordlength(line)
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
|
다른 부분은 쉽게 이해할 수 있다고 생각하지만, 9번째 줄의 locword[0] != '-'부분은 왜 저렇게 썼는지 궁금할 수 있을거 같다.
locword[0]가 될 수 있는 값은 '-', 빈칸, 알파벳 소문자 중 하나이다. 만약 locword[0]이 알파벳이고, word[-1] =='-'이라면 word와 locword는 같은 단어이므로 둘이 합치면 된다.
locword[0]가 빈칸이라면, 다른 단어이지만 빈칸으로 나눌것이기 때문에 그냥 더하면 된다.
locword[0]가 '-'이라면, word와 locword는 다른 단어이므로 빈칸을 더해 나눈다.
이런식으로 동작한다.
느낀점:
1. def를 써서 함수형으로 만들고 코드를 짜는게 좋아보이는데 이대로 할까..
'코테용 문제풀이 > 알고스팟' 카테고리의 다른 글
알고스팟 coin change(coins) 문제 파이썬으로 풀기 (0) | 2019.11.10 |
---|---|
알고스팟 외발 뛰기(jumpgame) 문제 파이썬으로 풀기 (0) | 2019.11.02 |
알고스팟 Longest Increasing Sequence (LIS)문제 파이썬으로 풀기 (0) | 2019.10.27 |
알고스팟 울타리 잘라내기 (fence) 문제 파이썬으로 풀기 (0) | 2019.10.14 |
알고스팟 weekly calendar 문제 파이썬으로 풀기 (0) | 2019.10.09 |