알고리즘 연습/구현, 문자열

[🥉1 / 백준 3181 / 파이썬] 줄임말 만들기

김세진 2021. 7. 19. 05:26
반응형

 

 

3181번: 줄임말 만들기

꿍은 만사가 귀찮아서 말을 하기도 귀찮아 한다. 그래서 하려는 말을 대신해줄 줄임말을 만들려고 하는데 나름 규칙을 만들었다. 하려는 말은 최소 하나 이상의 단어를 포함하는데 각 단어들은

www.acmicpc.net

문제

꿍은 만사가 귀찮아서 말을 하기도 귀찮아 한다. 그래서 하려는 말을 대신해줄 줄임말을 만들려고 하는데 나름 규칙을 만들었다.

하려는 말은 최소 하나 이상의 단어를 포함하는데 각 단어들은 정확히 한칸의 공백으로 구분이 된다. 줄임말을 만들때는 각 단어의 앞글자를 따서 만들어지는데 다음의 단어들은 쓸모없는 단어들이므로 무시한다.

 

'i', 'pa', 'te', 'ni', 'niti', 'a', 'ali', 'nego', 'no', 'ili'.

 

하지만 이 단어들이 하려는 말의 맨 앞에 올경우 매우 중요하다고 판단되어 무시하면 안되고 줄임말에 포함하여야 한다.

줄임말을 만들기도 귀찮아진 꿍을 위해 줄임말을 만들어주는 프로그램을 작성하라.

단, 줄임말은 모두 대문자로만 이루어져있다.

입력

입력은 유일하게 한 줄만 주어지며 하려는 말이 포함되어 있다.

문장은 알파벳 소문자와 공백으로만 이루어져 있다.

문장의 최대길이는 100이다.

출력

만들어진 줄임말을 출력하라.

 

예제 입력 1 

micro soft

예제 출력 1 

MS

예제 입력 2 

biti ali i ne biti

예제 출력 2 

BNB

예제 입력 3 

ali ja sam i jucer jeo

예제 출력 3 

AJSJJ

 

풀이

 

특정 단어가 맨 앞에 올 때 말고는 무시하면서 앞 글자만 따 출력하는 문제이다.

 

첫 번째로 오는 단어는 무조건 앞 글자를 따오라는 말이니,

맨 앞 단어의 첫 글자를 가져온 뒤에 문제를 푸는게 편할 것이다.

 

뒤의 단어들은 하나씩 검사하며 무시 단어중에 속하는지 판별하고 아니면 앞글자 출력, 맞으면 건너뛰면 된다.

 

줄임말이 완성됐다면 문제의 조건에 맞게 upper 함수를 사용하여 대문자로 만들어주자.

 

a = ['i', 'pa', 'te', 'ni', 'niti', 'a', 'ali', 'nego', 'no', 'ili']
b = input().split()
r = b[0][0]

for i in range(1,len(b)):
    if b[i] in a:
        continue
    r += b[i][0]
print(r.upper())
반응형