문제
알고리즘
- 반복문을 통해 모든 단어를 확인한다.
- 1번과 2번의 방법을 한 번에 수행한다.
- 반복문을 통해 단어의 첫 글자의 알파벳을 확인한다.
- 현재 단어의 첫 글자가 단축기로 지정되어 있지 않다면 현재 단어의 첫 글자를 단축기로 지정하고 "[]"를 감싼 후 출력한다.
- 다음으로 위 방법을 통해 break가 되지 않았다면 3번의 방법을 수행한다.
- 위 방법과 다르게 단어의 첫 글자의 알파벳이 아닌 모든 단어의 알파벳을 순서대로 확인한다.
- 현재 단어의 알파벳이 단축기로 지정되어 있지 않다면 현재 단어의 알파벳을 단축기로 지정하고 "[]"를 감싼 후 출력한다.
코드
import sys
n = int(sys.stdin.readline())
arr = [] # 단축기로 지정된 알파벳
# 반복문을 통해 모든 단어를 확인
for _ in range(n):
word = list(map(str, sys.stdin.readline().split()))
# 1번과 2번의 방법을 수행
for i in range(len(word)):
# 현재 단어의 첫 글자가 단축기로 지정되어 있지 않다면
if word[i][0].upper() not in arr:
arr.append(word[i][0].upper()) # 현재 단어의 첫 글자를 단축기로 지정
word[i] = "[" + word[i][0] + "]" + word[i][1:] # 현재 단어의 첫 글자를 "[]"를 감싼 후 출력.
print(" ".join(word))
break
# 반복문이 break를 통과하지 않았다면
else:
# 3번의 방법을 수행
for j in range(len(word)):
flag = False # 현재 단어의 알파벳을 단축기로 사용했는지 유무
# 반복문을 통해 모든 단어의 알파벳을 확인
for k in range(len(word[j])):
# 현대 단어의 알파벳이 단축기로 지정되어 있지 않다면
if word[j][k].upper() not in arr:
arr.append(word[j][k].upper()) # 현재 단어의 첫 글자를 단축기로 지정
flag = True
word[j] = word[j][:k] + "[" + word[j][k] + "]" + word[j][k + 1:] # 현재 단어의 첫 글자를 "[]"를 감싼 후 출력.
print(" ".join(word))
break
if flag:
break
# 반복문이 break를 통과하지 않았다면
# 어떠한 알파벳으로도 단축기를 지정할 수 없는 것
else:
print(*word)
github
'CodingTest > Baekjoon' 카테고리의 다른 글
[baekjoon] 백준 1411번(파이썬): 비슷한 단어 (0) | 2022.03.25 |
---|---|
[baekjoon] 백준 1326번(파이썬): 폴짝폴짝 (0) | 2022.03.22 |
[baekjoon] 백준 1182번(파이썬): 부분수열의 합 (0) | 2022.03.20 |
[baekjoon] 백준 1141번(파이썬): 접두사 (0) | 2022.03.19 |
[baekjoon] 백준 1138번(파이썬): 한 줄로 서기 (0) | 2022.03.18 |