문제의 목표는 입력(단어 혹은 구(둘 이상의 단어))이 주어졌을 때, 단축키를 지정하는 것이다.
단축키를 지정하는 기준은 아래와 같다.
1. 단축키는 첫 글자를 우선적으로 검사하여 아직 사용되지 않은 알파벳을 찾아서 지정한다. 2. 만약 첫 글자가 모두 사용되었다면, 각 단어의 글자들을 검사하여 단축키를 지정한다.
단축키를 지정하기 위한 로직은 다음과 같이 세웠다.
단축키 목록 초기화: 이미 사용된 단축키를 기록할 리스트를 만들기
각 입력 처리
첫 글자가 이미 사용된 단축키 목록에 없는 경우 => 해당 글자를 단축키로 지정
모든 단어의 첫 글자가 이미 사용된 경우=> 각 글자를 검사하여 사용되지 않은 단축키를 찾아서 적용
어떤 것도 지정할 수 없는 경우, 해당 옵션을 원래대로 출력
🌵코드
N = int(input())
word_lst = [] # 옵션(단어 입력)을 저장할 리스트
shortcuts= [] # 사용된 단축키 목록
tup_lst = [] # 단축키 지정 여부를 기록할 리스트
# 입력받은 옵션을 단어 단위로 리스트에 저장
for _ in range(N):
word_lst.append(input().split())
# 각 옵션에 대해 단축키를 지정
for lst in word_lst:
for i in range(len(lst)):
# 단축키를 첫 글자부터 찾기
if lst[i][0].lower() not in shortcuts:
shortcuts.append(lst[i][0].lower())
tup_lst.append((lst[i][0],lst))
# 첫 글자를 단축키로 지정
lst[i] = lst[i].replace(lst[i][0],"[" + lst[i][0] + "]",1)
print(" ".join(lst))
break
# 첫 글자가 모두 사용된 경우
if lst not in tup_lst[-1]:
for i,word in enumerate(lst):
if lst not in tup_lst[-1]:
#print("word",word)
for char in word:
if char.lower() not in shortcuts:
shortcuts.append(char.lower())
tup_lst.append((char,lst))
word = word.replace(char,"[" + char + "]",1)
lst[i] = word
print(" ".join(lst))
break
# 단축키가 지정되지 않은 경우
if lst not in tup_lst[-1]:
tup_lst.append((-1,lst))
print(" ".join(lst))
🌵문법
replace() 함수
Python의 replace() 함수는 문자열에서 특정 부분을 다른 부분으로 바꿀 때 사용되는 매우 유용한 함수이다.
이 함수는 원본 문자열을 수정하지 않고, 수정된 새로운 문자열을 반환한댜. (원본 문자열은 변경x)
replace() 함수 기본 문법
str.replace(old, new, count)
str: 원본 문자열
old: 교체하고자 하는 문자열
new: 새로 대체할 문자열
count: (선택 사항) 바꾸고자 하는 횟수(지정하지 않으면 문자열 내의 모든 old 문자열을 new 문자열로 교체)