1283-s1 성공
This commit is contained in:
61
workbook_8708/1283-s1.py
Normal file
61
workbook_8708/1283-s1.py
Normal file
@@ -0,0 +1,61 @@
|
||||
# 단축키 지정
|
||||
|
||||
import sys
|
||||
|
||||
input = sys.stdin.readline
|
||||
|
||||
def check_word_first(words, shortcut):
|
||||
for i in range(len(words)):
|
||||
c = words[i][0].upper()
|
||||
if not shortcut.get(c, 0):
|
||||
shortcut[c] = 1
|
||||
return i
|
||||
return -1
|
||||
|
||||
def check_word(word, shortcut):
|
||||
for i in range(len(word)):
|
||||
c = word[i].upper()
|
||||
if not shortcut.get(c, 0):
|
||||
shortcut[c] = 1
|
||||
return i
|
||||
return -1
|
||||
|
||||
def solution():
|
||||
n = int(input().rstrip())
|
||||
|
||||
shortcut = {}
|
||||
|
||||
for _ in range(n):
|
||||
option = input().rstrip().split()
|
||||
shortcut_idx = check_word_first(option, shortcut)
|
||||
|
||||
if shortcut_idx != -1:
|
||||
option[shortcut_idx] = f"[{option[shortcut_idx][0]}]" + option[shortcut_idx][1:]
|
||||
print(*option)
|
||||
continue
|
||||
|
||||
idx = 0
|
||||
while idx < len(option):
|
||||
shortcut_idx = check_word(option[idx], shortcut)
|
||||
if shortcut_idx != -1:
|
||||
option[idx] = option[idx][:shortcut_idx] + f"[{option[idx][shortcut_idx]}]" + option[idx][shortcut_idx+1:]
|
||||
break
|
||||
idx += 1
|
||||
|
||||
print(*option)
|
||||
|
||||
return
|
||||
|
||||
|
||||
solution()
|
||||
|
||||
"""
|
||||
걸린 시간: 41분
|
||||
|
||||
시간 복잡도: 완전 탐색이기 때문에 O(5*10*n)이다.
|
||||
|
||||
해설: 30개의 옵션에 1개 옵션 당 5개 이하 단어와 1개의 단어에 10개 이하의 알파벳이면 다 돌아봤자 1500이다.
|
||||
따라서 조건대로 구현하면 된다. 대소문자를 구분하지 않기 때문에 다 upper로 만들어서 현재 사용된 옵션을 기록한다.
|
||||
단어 첫 글자들을 보며 옵션 설정하고, 한 단어씩 쭉 보면서 옵션 설정을 한다.
|
||||
옵션을 설정하면 출력 형태를 맞춰서 리스트에 저장하고 마지막에 한번에 출력한다.
|
||||
"""
|
||||
Reference in New Issue
Block a user