문제
1283번: 단축키 지정
첫째 줄에 옵션의 개수 N(1 ≤ N ≤ 30)이 주어진다. 둘째 줄부터 N+1번째 줄까지 각 줄에 옵션을 나타내는 문자열이 입력되는데 하나의 옵션은 5개 이하의 단어로 표현되며, 각 단어 역시 10개 이하
www.acmicpc.net
알고리즘
- 반복문을 통해 모든 단어를 확인한다.
- 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
GitHub - junjange/CodingTest: 내가 푼 코딩 테스트 문제와 해결법
내가 푼 코딩 테스트 문제와 해결법. Contribute to junjange/CodingTest development by creating an account on GitHub.
github.com
'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 |