본문 바로가기
Algorithm Problem Solving/BaekJoon

[BaekJoon] 백준 2954 창영이의 일기장 (Python / 파이썬)

by ʚ⇜❅🎕̈❄⇝ɞ 2021. 8. 22.
728x90
반응형

BaekJoon 백준 2954 창영이의 일기장 문제는 일기장에 모음('a', 'e', 'i', 'o', 'u')의 다음에 'p'를 하나 쓰고,  그 모음을 하나 더 쓴다. 일기장에 작성한 문장이 하나 주어졌을 때, 원래 문장은 무엇인지 구하는 문제이다. 난이도는 Bronze 1이다.

 

BaekJoon 2954 창영이의 일기장 문제 정보

출처

- https://www.acmicpc.net/problem/2954

알고리즘 분류

- 문자열 string, 구현

난이도

- 브론즈 1 / Bronze 1

 

창영이의 일기장 문제 요약

  • 창영이는 남들이 자신의 일기장을 보는 것을 막기 위해서 모음('a', 'e', 'i', 'o', 'u')의 다음에 'p'를 하나 쓰고,  그 모음을 하나 더 쓴다.
  • 예를 들어, "kemija"는 "kepemipijapa"가 되고, "paprika"는 "papapripikapa"가 된다.
  • 창영이가 일기장에 작성한 문장이 하나 주어졌을 때, 원래 문장은 무엇인지 구하여 출력한다.
  • 알파벳 소문자와 공백으로만 이루어진 문장이 하나 주어진다. 모든 단어는 공백 하나로 구분되어 있다. 문장의 길이는 최대 100이다.

 

문제 풀이 과정

  1. 문장을 입력받는다.
  2. 입력받은 문장을 한 글자씩 탐색하여 모음('a', 'e', 'i', 'o', 'u')을 만나면 결과 리스트에 모음을 저장하고 3칸 뒤의 글자부터 탐색한다.
  3. 모음이 아니면 결과 리스트에 그대로 저장하고 다음 글자를 탐색한다.
  4. 탐색이 끝나면 결과 리스트를 출력한다.

 

코드 및 설명
  • rst [] - 원래 문장을 저장하기 위한 리스트
  • i - 입력받은 문장의 글자 위치
sentence = input()
rst = []
i = 0
while i < len(sentence):
    if sentence[i] in ('a', 'e', 'i', 'o', 'u'):
        rst.append(sentence[i])
        i += 3
    else:
        rst.append(sentence[i])
        i += 1

print(''.join(rst))

 

관련된 알고리즘 >

(Brute Force) 브루트포스 알고리즘 - 문자열 패턴 매칭

 

(Brute Force) 브루트포스 알고리즘 - 문자열 패턴 매칭

포스팅에서 다룰 브루트 포스 Brute Force 알고리즘은 비교 대상 문자열을 처음부터 끝까지 모두 순회하면서 비교하기 때문에 고지식한 알고리즘이라고도 불리는 문자열 패턴 매칭 알고리즘입니

wondytyahng.tistory.com


BaekJoon 백준 2954 창영이의 일기장 문제를 파이썬 python으로 풀어보았다. 난이도는 Bronze 브론즈 1이다. 

728x90
반응형

댓글