-
24.5 심사문제 : 특정 단어 개수 세기코딩도장 심사문제모음 2020. 10. 24. 00:16728x90
표준 입력으로 문자열이 입력됩니다. 입력된 문자열에서 'the'의 개수를 출력하는 프로그램을 만드세요(input에서 안내 문자열은 출력하지 않아야 합니다). 단, 모든 문자가 소문자인 'the'만 찾으면 되며 'them', 'there', 'their' 등은 포함하지 않아야 합니다.
사용한 코드
1. input
2. split
3. for 반복문
4. if 조건문
첫 접근 방법
처음엔 a 라는 변수에 입력값을 할당하고 a.count('the') 로
2줄이면 해결할 수 있을것 같았다.
하지만, count메서드로 갯수를 구하는 순간 위 출력값이 8이 나오는데,
여기에 'whether' , 'themselves' 값이 포함되어 원하고자 하는 'the' 만을 출력할 수 없다.
또한, 입력값을 받기 위한 코드로
a = input()
을 사용하였으나, count 메서드를 사용하지 않기 때문에 첫번째 줄 힌트를 보고 for문을 사용하는 것으로 해결 할 수 있었다. (결국 힌트를 봐야했다.)
풀이
1. 먼저 입력된 긴 텍스트를 split을 이용해 분리하여 리스트를 할당한다.
a = input().split()
print(a) 를 해보면
['the', "grown-ups'", 'response,', 'this', 'time,', 'was', 'to', 'advise', 'me', 'to', 'lay', 'aside', 'my', 'drawings', 'of', 'boa', 'constrictors,', 'whether', 'from', 'the', 'inside', 'or', 'the', 'outside,', 'and', 'devote', 'myself', 'instead', 'to', 'geography,', 'history,', 'arithmetic,', 'and', 'grammar.', 'That', 'is', 'why,', 'at', 'the,', 'age', 'of', 'six,', 'I', 'gave', 'up', 'what', 'might', 'have', 'been', 'a', 'magnificent', 'career', 'as', 'a', 'painter.', 'I', 'had', 'been', 'disheartened', 'by', 'the', 'failure', 'of', 'my', 'Drawing', 'Number', 'One', 'and', 'my', 'Drawing', 'Number', 'Two.', 'Grown-ups', 'never', 'understand', 'anything', 'by', 'themselves,', 'and', 'it', 'is', 'tiresome', 'for', 'children', 'to', 'be', 'always', 'and', 'forever', 'explaining', 'things', 'to', 'the.']
공백을 기준으로 리스트가 할당된것을 알 수 있다.
2. for 반복문을 사용해 a의 리스트 요소 값을 하나하나 검증한다.
여기서 총 'the' 가 몇 개 있는지 갯수를 출력해야하는 것으로 for 문 전 count = 0을 할당한다.
또한 a에서 뽑아온 값(i)가 'the' 일때 count 를 +1 증가시킨다.
출력값
:: 4
3. 2번 코드로만 작성을하게 되면 4가 출력이 되는데
i 의 값이 'the' 인 경우에서 2가지가 제외되어 있다. a 리스트의 값 중 하나인 'the,' 와 'the.' 가 제외되어있다.
따라서 문자열 메서드인 strip을 이용한 조건으로 사용해줘야한다.
※ .strip(), .lstrip(), .rstrip() // 양쪽 공백 제거, 왼쪽 공백 제거, 오른쪽 공백 제거 3가지가 있다.
if i.rstrip(',.') == 'the':
여기서는 'the,' , 'the.' 만 있어 rstrip을 사용하였으며 양쪽으로 제거해주는 strip을 사용해도 결과는 동일하다.
엄청나게 많은 요소가 있을 경우 일일이 대입을 해볼수 없으니 맘편히 strip을 사용하자
if i.strip(',.') == 'the':
위 코드로 방향에 상관없이 , . 같은 부가요소를 삭제하여 갯수를 셀 수 있다.
※ 실제 코딩 도장의 해법과 다를 수 있으며, 답은 여러가지가 존재합니다.
코딩 지적 정말 감사히 받겠습니다.
728x90'코딩도장 심사문제모음' 카테고리의 다른 글
25.8 심사문제 : 딕셔너리 특정 값 삭제하기 (0) 2020.10.26 25.7 연습문제 : 평균점수구하기(dictionary이용) (0) 2020.10.26 24.4 연습문제 : 파일 경로에서 파일명만 가져오기 (0) 2020.10.23 23.7 지뢰찾기(어려움..) (0) 2020.10.18 23.6 연습문제 3차원 리스트 만들기 (0) 2020.10.15