반응형
https://www.acmicpc.net/problem/1283
1283번: 단축키 지정
첫째 줄에 옵션의 개수 N(1 ≤ N ≤ 30)이 주어진다. 둘째 줄부터 N+1번째 줄까지 각 줄에 옵션을 나타내는 문자열이 입력되는데 하나의 옵션은 5개 이하의 단어로 표현되며, 각 단어 역시 10개 이하
www.acmicpc.net
import sys
ssr = sys.stdin.readline
def query1(words):
for i in range(len(words)):
words[i] = list(words[i])
if words[i][0] not in hotkeys:
hotkeys[words[i][0].lower()] = 0
hotkeys[words[i][0].upper()] = 0
words[i][0] = '[' + words[i][0] + ']'
words[i] = ''.join(words[i])
print(' '.join(words))
return True
words[i] = ''.join(words[i])
else:
return False
def query2(words):
for i in range(len(words)):
words[i] = list(words[i])
for j in range(len(words[i])):
if words[i][j] not in hotkeys:
hotkeys[words[i][j].lower()] = 0
hotkeys[words[i][j].upper()] = 0
words[i][j] = '[' + words[i][j] + ']'
words[i] = ''.join(words[i])
print(' '.join(words))
return True
words[i] = ''.join(words[i])
else:
print(' '.join(words))
n = int(ssr())
hotkeys = {}
for _ in range(n):
words = ssr().rstrip().split()
if not query1(words):
query2(words)
이번에는 문제 자체는 어렵지 않습니다. 그냥 하라는대로 구현해주면 되구요. 다만 어떻게 단축키로 사용되는 문자에 대괄호를 씌울 것인가를 고민해볼만한 문제겠네요. replace를 쓸 순 있겠지만 replace 함수는 인수로 바꿀 문자열, 바뀔 문자열, 바꾸는 횟수만을 입력 받기 때문에 원하는대로 동작시키려면 약간 귀찮은 방법을 사용해야 할 수 있습니다. 당연히 정규식이나 translate도 replace 함수를 쓰려면 해야하는 과정과 비슷한 과정을 거쳐야 할 것 같습니다.
그래서 저는 인덱스로 접근할 수 있도록 문자열을 리스트화해서 단어의 맨 앞글자만 체크하는 query1함수와 모든 글자를 체크하는 query2 함수를 만들어서 문제를 해결했습니다. 변수 이름 잘쓰겠다고 해놓고 막상 아예 인덱스로 접근하는 코드를 짜니까 딱히 좋은 이름이 안떠올라서 그냥 하던대로 했습니다. 그래도 복잡하지도 않고 순서대로 보면 되는 코드라 헷갈리진 않았네요.
반응형
'Problem Solving > BOJ' 카테고리의 다른 글
[BOJ][Python]14940 풀이 (0) | 2023.07.22 |
---|---|
[BOJ][Python]18110 풀이 (0) | 2023.07.20 |
[BOJ][Python]1916 풀이 (0) | 2023.07.19 |
[BOJ][Python]1366 풀이 (0) | 2023.07.19 |