-
27.6 심사문제: 특정 문자가 들어있는 단어 찾기코딩도장 심사문제모음 2020. 10. 29. 20:04728x90
문자열이 저장된 words.txt 파일이 주어집니다(문자열은 한 줄로 저장되어 있습니다). words.txt 파일에서 문자 c가 포함된 단어를 각 줄에 출력하는 프로그램을 만드세요. 단어를 출력할 때는 등장한 순서대로 출력해야 하며 ,(콤마)와 .(점)은 출력하지 않아야 합니다.
사용한 코드
1. with ~ as 문
2. readline
3. split
4. for 문
5. if 문
6. in 연산자
첫 접근 방법
한줄로 줄바꿈 없이 입력되어 있는 내용을 split을 이용한 공백을 기준으로 리스트를 만들고 반복문으로 해당 요소를 검증하면서 출력하는 방법으로 접근방법은 어렵지 않다.
첫 풀이에서는 IDLE에서 정상 작동하였으나 정답으로 인정해주지 않아 다시 한번 작성하였다.
풀이 1 은 in 연산자를 사용하지 않았던 방법이며
풀이 2는 코딩도장에서의 정답으로 in 연산자를 이용한 방법이다.
풀이.1
1. 먼저 with as 문으로 파일 객체를 open하면서 시작한다.
with open ('words.txt', 'r') as file:
2. 가져온 file 객체를 파일의 내용을 한줄씩 읽는 readline 과 split 으로 공백을 기준으로한 리스트를 하나 생성한다.
a = file.readline().split()
3. 중첩 for문 과 if 문을 사용해
바깥의 for 문에는 a 의 각각 문자열을 가져오고 안쪽의 for 문에서는 가져온 문자열을 하나하나 가져와서 if 문으로 검증한다.
( 바깥 = 'apple' // 안쪽 == 'a' 'p' 'p' 'l' 'e')
for i in a:
for j in i:
if j == 'c': ## 만약 j 값이 'c' 와 같다면 그때 i 문자열을 출력, strip 으로 양옆의 ,(콤마) .(점)을 삭제후 출력해주면 된다.
print(i.strip(',.'))
## 값은 문제없이 출력되나 코딩 도장 답안으로는 pass가 불가능한듯하다.
풀이.2
위의 풀이 2번까지는 동일
1. 만들어놓은 a 를 이용한 for 문 에서 뽑아오는 i 문자열 안에 'c' 가 있는지 , in 연산자를 통해 검증
i 문자열 안에 'c'가 있을 경우 양옆이 ,(콤마) . (점)을 strip으로 삭제 후 출력
with open ('words.txt', 'r') as file:
a = file.readline().split()
for i in a:
if 'c' in i:
print(i.strip(',.'))
※ 실제 코딩 도장의 해법과 다를 수 있으며, 답은 여러가지가 존재합니다.
코딩 지적 정말 감사히 받겠습니다.
728x90'코딩도장 심사문제모음' 카테고리의 다른 글
28.4 심사문제 : 파일에서 회문인 단어 출력하기 (0) 2020.11.01 28.3 연습문제 : 단어 단위 N-gram 만들기 (0) 2020.11.01 27.5 연습문제 : 파일에서 10자 이하인 단어 개수 세기 (0) 2020.10.29 24.6 심사문제 : 높은 가격순으로 출력하기 (0) 2020.10.29 26.9 심사문제 : 공약수 구하기 (0) 2020.10.28