파이썬 알고리즘 마스터 클래스: 기본 난이도 문제 해결법
    • 01
      [1회] 기초적인 문자열 구현
    • 대소문자 바꾸기
      단어 필터
      큰 수식 찾기
    • 02
      [1회][해설] 기초적인 문자열 구현
    • 대소문자 바꾸기
      단어 필터
      큰 수식 찾기
    • 03
      [2회] 기초 수학과 구현
    • 최장 맨해튼 거리
      8진수 계산기
      소수 찾기
    • 04
      [2회][해설] 기초 수학과 구현
    • 최장 맨해튼 거리
      8진수 계산기
      소수 찾기
    • 05
      [3회] 시뮬레이션과 창의적 해결법
    • 0커플
      규칙 숫자 야구
      폭탄 구현하기
    • 06
      [3회][해설] 시뮬레이션과 창의적 해결법
    • 0커플
      규칙 숫자 야구
      폭탄 구현하기
    • 07
      [4회] 완전 탐색
    • 제곱암호
      개미와 진딧물
      수 이어 붙이기
    • 08
      [4회][해설] 완전 탐색
    • 제곱암호
      개미와 진딧물
      수 이어 붙이기
    • 09
      [5회] 기초 자료구조의 구현과 응용
    • Stack
      체크 카드
      1차원 뿌요뿌요
    • 10
      [5회][해설] 기초 자료구조의 구현과 응용
    • Stack
      체크 카드
      1차원 뿌요뿌요
    • 11
      [6회] 그리디 알고리즘, 원인과 결과 찾기
    • 거스름돈
      구름 스퀘어
      직사각형 만들기
    • 12
      [6회][해설] 그리디 알고리즘, 원인과 결과 찾기
    • 거스름돈
      구름 스퀘어
      직사각형 만들기
    • 13
      [7회] 다이나믹 프로그래밍
    • 피보나치 수
      보드 게임
      거리두기
    • 14
      [7회][해설] 다이나믹 프로그래밍
    • 피보나치 수
      보드 게임
      거리두기
    • 15
      [8회] 그래프 탐색(1)
    • 플레이어의 여행
      뭉친 K
      모래섬
    • 16
      [8회][해설] 그래프 탐색(1)
    • 플레이어의 여행
      뭉친 K
      모래섬
    • 17
      [9회] 그래프 탐색(2)
    • 플레이어의 여행 2
      알파벳 트리 장난감
      순환하는 수로
    • 18
      [9회][해설] 그래프 탐색(2)
    • 플레이어의 여행 2
      알파벳 트리 장난감
      순환하는 수로
    • 19
      [10회] 모의고사
    • 1번
      2번
      3번
    • 20
      [10회][해설] 모의고사
    • 1번
      2번
      3번
    단어 필터
    02 [1회][해설] 기초적인 문자열 구현
    단어 필터

    공부할 개념


    • 시뮬레이션
    • map()
    • 문자열 메소드


    문제 분석


    이 문제는 메세지 에 포함된 필터 단어 을 계속 제거하는 문제입니다. 일반적인 단어를 제거하는 것과 다르게 2가지 조건이 있습니다.

    • 단어 가 동시에 여러 개 등장한다면, 그 중 가장 앞에 있는 단어부터 제거하기
    • 한 번 제거한 이후에도 필터 단어 가 남아있다면, 더 이상 남아있지 않을 때까지 제거 반복하기

    이번 문제에서는 이 조건을 모두 만족할 수 있는 코드를 문자열 메소드를 적극 활용하여 짜보도록 하겠습니다.


    map() 으로 한 번에 적용하기


    Python에는 map(Function, iterable Data) 이라는 함수가 있습니다. 이 함수는 첫 번째 매개 변수에 함수를 넣고, 두번째 매개 변수에 반복 가능한 자료형을 넣습니다. 구체적으로 map() 함수가 하는 역할은 반복 가능한 자료형의 모든 요소에 첫 번째 매개 변수로 준 함수를 적용한 결과를 반환한 map 객체를 반환합니다. 아래의 코드를 통해서 더 쉽게 이해할 수 있습니다.

    py3
    실행 결과를 확인해보세요!

    갑자기 왜 map() 함수에 대한 설명이 나왔을까요? 바로 Python에서 여러 개의 정수를 한 번에 입력 받기 위해서 필요하기 때문입니다.

    현재 문제처럼 한 줄에 2개의 정수를 받기 위해서 Python은 꽤나 복잡한 작업을 진행해야 합니다. 한 줄 전체를 문자열로 받고, 띄어쓰기 단위로 분리한 뒤, 각각의 변수에 맞게 적절한 값을 넣어줍니다.

    py3

    그러나 항상 이런 방식으로 입력을 받을 수는 없습니다. 한 줄에 10, 100개의 값이 입력이 된다면 반복문을 통해서 작성해야 하므로, 입력만 받는 코드를 짰는데도 힘이 빠져버릴지 모릅니다.

    이보다는 아래 코드와 같이 map() 함수를 활용해서 더 깔끔하게 이런 입력을 받을 수 있습니다.

    py3

    map() 함수는 입력 이외에도 구현이나, 시뮬레이션을 할 때 유용하게 사용이 됩니다. 다양한 알고리즘을 구현할 때 있어서 자주 사용되는 함수이기 때문에 꼭 활용하는 방법을 익혀두셔야 합니다.


    문자열 메소드로 단순하게 해결하기


    우선 이 문제는 아래의 코드처럼 반복문과 인덱스 찾기만으로 해결할 수 있습니다. 만약에 메세지 에 단어 가 포함되어 있다면, 계속 그 단어를 찾은 뒤, 그 구간을 문자열에서 지워주면 됩니다.

    py3

    하지만 메소드를 사용하면 조금 더 간결하고 직관적으로 코드를 작성할 수 있습니다. 굳이 우리가 단어를 찾아서 지우는 대신, str.replace() 메소드를 이용하면 현재 문자열에 등장하는 특정 문자열을 한 번에 모두 제거할 수 있습니다. str.replace(a, b) 는 문자열 str에 등장하는 모든 문자열 a를 문자열 b로 변환한다는 의미입니다. 아래와 같이 b를 빈 문자열로 두면, 삭제하는 연산이 되겠죠?

    py3


    Code.


    py3
    py3
    질문하기