© 2025 anveloper.dev
GitHub·LinkedIn·Contact

목차

  • 문제
  • 입력
  • 출력
  • 예제
  • 풀이
  • 코드
  • 복잡도
풀이 목록으로 돌아가기

BOJ 3181 - 줄임말 만들기

2025-07-15
BOJ
브론즈 II
python
원본 문제 보기
구현
문자열

문제

BOJ 3181 - 줄임말 만들기

크로아티아어 문장이 주어질 때, 각 단어의 첫 글자를 이어 붙여 줄임말(약어)을 만드는 문제이다. 단, 특정 관사/전치사/접속사 목록에 해당하는 단어는 줄임말 생성에서 제외한다. 최종 결과는 대문자로 출력한다.

입력

한 줄에 공백으로 구분된 크로아티아어 단어들이 주어진다.

출력

제외 단어를 건너뛰고 나머지 단어의 첫 글자를 이어 붙인 뒤 대문자로 출력한다.

예제

입력출력
fakultet elektrotehnike i racunarstvaFER

풀이

제외 단어 목록을 미리 정의하고, 입력 단어를 순회하며 목록에 없는 단어의 첫 글자만 수집한다. 첫 번째 단어는 항상 포함하고, 이후 단어부터 제외 여부를 판단한다.

  1. 제외할 단어 목록 a를 상수로 정의한다: i, pa, te, ni, niti, a, ali, nego, no, ili.
  2. 입력 문장을 공백 기준으로 분리하여 단어 리스트 b를 얻는다.
  3. 결과 문자열 r을 첫 단어의 첫 글자로 초기화한다.
  4. 두 번째 단어부터 순회하며, 제외 목록에 있으면 건너뛰고 없으면 첫 글자를 r에 추가한다.
  5. 최종 결과를 대문자로 변환하여 출력한다.

핵심 아이디어: 첫 번째 단어는 무조건 포함하고, 이후 단어는 제외 목록 여부로 필터링한다.

코드

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) — 단어 리스트 저장