BAEKJOON 1151
문제
영어 대소문자와 띄어쓰기만으로 이루어진 문자열이 주어진다. 이 문자열에는 몇 개의 단어가 있을까? 이를 구하는 프로그램을 작성하시오. 단, 한 단어가 여러 번 등장하면 등장한 횟수만큼 모두 세어야 한다.
입력
첫 줄에 영어 대소문자와 띄어쓰기로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 띄어쓰기 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열의 앞과 뒤에는 공백이 있을 수도 있다.
나의 처음 코드
# input_str에 문자열 입려 받는다.
input_str = input()
# input_arr에 한글자씩 쪼개서 넣는다
input_arr = list(map(str, input_str))
# 공백 총 갯수 초기화
count = 0
# 양 끝 부분 공백 있으면, 빼주는 과정
if input_arr[0] == ' ':
count -= 1
if input_arr[-1] == ' ':
count -= 1
# 공백을 다른 문자로 대체하고, 그 문자를 세는 작업
input_str = input_str.replace(' ', '^&*')
count += (input_str.count('^&*') + 1)
print(count)
다른 아이디어
문자열 벗기기(strip)
- strip([charset])
- 문자열 양 끝을 charset에서 찾아서 될 수 있는 모든 조합을 제거해준다. default는 공백문자를 제거
- lstrip([charset])
- 문자열 왼쪽 끝을 charset에서 찾아서 될 수 있는 모든 조합을 제거해준다. default는 공백문자를 제거
- rstrip([charset])
- 문자열 오른쪽 끝을 charset에서 찾아서 될 수 있는 모든 조합을 제거해준다. default는 공백문자를 제거
문자열 나누기(split)
- split(char)
- char르 기준으로 문자열으 나눈다. default는 공백문자를 기준
위 두가지 기능을 통해서, 한줄 코딩을 할 수 있다??!
당신도 한번 생각해 보길 바란다. :)
정답
print(len(str(input()).strip().split()))