For Programmer
백준 1152번 파이썬 문제풀이(문자열 - 단어의 개수) 본문
728x90
s = input()
if s[0] == " " and s[s.__len__()-1] == " ": #공백이 문장 맨앞과 맨뒤 모두에 존재한다면
print(s.count(" ")-1) #공백의 개수에서 -1만 해준다.
elif s[0] == " " or s[s.__len__()-1] == " ": #공백이 문장 맨앞과 맨뒤 둘중 하나만 존재한다면
print(s.count(" ")) #공백의 개수는 글자의 개수와 같다.
else: #공백이 문장 앞 뒤 모두 없다면
print(s.count(" ")+1) #공백의 개수+1 글자의 개수와 같다.
-> 이문제는 공백의 위치만 파악해주면 된다. 공백이 문자 맨앞에 나오는경우와 문자 맨뒤에 나오는 경우 둘다 나오는 경우 이렇게 3가지만 따로 조건을 걸어 처리해주고 공백이 문자열 사이에 나오는 경우는 공백의 개수 + 1 이 글자의 수이므로 간단한 조건 식을 짤 수 있다.
또다른 풀이(split이용하기)
s = input()
if s == " ": #입력받은 글자가 그냥 공백일 경우
print(0) #0을 출력
else:
text = s.split(" ") # 공백을 기준으로 글자를 나누어 리스트에 대입
for i in text: #text에 '' 을제거해주어야하는데 remove함수를 사용하게 될경우 맨앞의 '' 만 제거한다. 따라서 반복문이용
if i == '': #만약 text의 원소가 ''랑 같은 경우
text.remove('') # ''제거
print(text.__len__()) #리스트 개수 출력
-> 그냥 단순히 공백만 입력했을 때는 따로 split으로 처리하지않고 그냥 0으로 처리해준다. 이유는 split으로 처리하면 나머지 공백한개가 처리가 되지 않는다. split을 사용하게 되면 공백을 기준으로 문자를 나누어 리스트에 대입해 주는데 리스트를 돌면서 공백만 제거해주면 된다. 단, remove함수를 사용하면 맨앞의 공백만 제거하므로 반복문을 돌면서 모든 공백을 제거해야 한다.
728x90
'코팅테스트 > 백준 문제 모음' 카테고리의 다른 글
백준 5622번 파이썬 문제풀이(문자열:다이얼) (0) | 2021.09.08 |
---|---|
백준 2908번 파이썬 문제풀이(문자열:상수) - 파이썬스럽게 문자열 처리 (0) | 2021.09.08 |
백준 1157번 파이썬 문제풀이(문자열 - 단어공부) (0) | 2021.09.03 |
백준 2675번 파이썬 문제풀이(문자열 - 문자열반복) (2) | 2021.09.03 |
백준 10809번 파이썬 문제풀이(문자열 - 알파벳 찾기) : find함수 이용하지 않고 풀기 (0) | 2021.09.03 |
Comments