반응형
문제
영어 대소문자와 띄어쓰기만으로 이루어진 문자열이 주어진다. 이 문자열에는 몇 개의 단어가 있을까? 이를 구하는 프로그램을 작성하시오. 단, 한 단어가 여러 번 등장하면 등장한 횟수만큼 모두 세어야 한다.
풀이
[실패 코드]
string = input()
string = string.split(' ')
if string[0] == '' or string[-1]=='':
string = list(set(string))
string.remove('')
print(len(string))
처음엔 앞 뒤 공백의 경우만 생각을 해서
리스트 중복 제거로 풀어나갔다.
따라서, 집합 set으로 합쳤다가, remove() 함수를 이용해 공백만 추가로 제거해주면 된다고 코드를 짰다.
하지만 이는 같은 단어가 여러번 등장할 때 하나만 있는 것으로 판단하기에 틀린 코드 !!
📌 리스트 값 중복 제거하기 (집합 자료형 set)
set에는 2가지 큰 특징이 있다.
- 중복을 허용하지 않는다.
- 순서가 없다(Unordered).
[성공 코드]
string = input()
string = string.split(' ')
while (True):
if '' not in string:
break
string.remove('')
print(len(string))
- split(' ') → 공백을 기준으로 문자열을 나누어 리스트에 저장
- while문을 돌려 배열 안에 공백 여부를 확인한다. (not in)
- remove('값')을 통해 공백을 하나하나 지워간다.
반응형
'Python > 코딩테스트' 카테고리의 다른 글
[python] 프로그래머스 - 프린터 (0) | 2021.01.25 |
---|---|
[python] 백준 9012번 - 괄호 (0) | 2021.01.25 |
[Python] 프로그래머스 - 두 정수 사이의 합 (0) | 2021.01.22 |
소수 구하기 (0) | 2021.01.10 |
[Python] 프로그래머스 - 문자열 내림차순으로 배치하기 (0) | 2020.12.19 |