ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 27.6 심사문제: 특정 문자가 들어있는 단어 찾기
    코딩도장 심사문제모음 2020. 10. 29. 20:04
    728x90

    문자열이 저장된 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
Designed by Tistory.