문제
크로아티아어 문장이 주어질 때, 각 단어의 첫 글자를 이어 붙여 줄임말(약어)을 만드는 문제이다. 단, 특정 관사/전치사/접속사 목록에 해당하는 단어는 줄임말 생성에서 제외한다. 최종 결과는 대문자로 출력한다.
입력
한 줄에 공백으로 구분된 크로아티아어 단어들이 주어진다.
출력
제외 단어를 건너뛰고 나머지 단어의 첫 글자를 이어 붙인 뒤 대문자로 출력한다.
예제
| 입력 | 출력 |
|---|---|
fakultet elektrotehnike i racunarstva | FER |
풀이
제외 단어 목록을 미리 정의하고, 입력 단어를 순회하며 목록에 없는 단어의 첫 글자만 수집한다. 첫 번째 단어는 항상 포함하고, 이후 단어부터 제외 여부를 판단한다.
- 제외할 단어 목록
a를 상수로 정의한다:i,pa,te,ni,niti,a,ali,nego,no,ili. - 입력 문장을 공백 기준으로 분리하여 단어 리스트
b를 얻는다. - 결과 문자열
r을 첫 단어의 첫 글자로 초기화한다. - 두 번째 단어부터 순회하며, 제외 목록에 있으면 건너뛰고 없으면 첫 글자를
r에 추가한다. - 최종 결과를 대문자로 변환하여 출력한다.
핵심 아이디어: 첫 번째 단어는 무조건 포함하고, 이후 단어는 제외 목록 여부로 필터링한다.
코드
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())복잡도
- 시간: O(N) — 단어 개수 N에 대해 한 번 순회
- 공간: O(N) — 단어 리스트 저장