https://www.acmicpc.net/problem/1283
🗒️파이썬 코드 풀이
import sys
N = int(input())
shortcut = []
def first_shortcut(str_lst):
state = 0
for i in range(len(str_lst)) :
if str_lst[i][0].lower() not in shortcut:
shortcut.append(str_lst[i][0].lower())
print_shortcut(str_lst,i,0)
state = 1
break
if not(state):
sequence_shorcut(str_lst)
def sequence_shorcut(str_lst):
state = 0
for i in range(len(str_lst)):
for k in range(len(str_lst[i])):
if str_lst[i][k].lower() not in shortcut:
shortcut.append(str_lst[i][k].lower())
print_shortcut(str_lst,i,k)
state = 1
return
if not(state):
print(" ".join(str_lst), end =" ")
def print_shortcut(str_lst,i,k):
str_lst[i] = str_lst[i][:k] + "[" + str_lst[i][k] + "]" + str_lst[i][k+1:]
print(' '.join(str_lst), end=" ")
for _ in range(N):
str_lst = input().split()
first_shortcut(str_lst)
print()
1. 문제의 조건들을 한번에 구현 하기 어렵기 때문에 분할하여 함수로 만든다.
2. 여기에서 구현해야 할 함수는 크게 3가지이다.
- 단어의 첫글자 단축키 지정
- 왼쪽부터 오른쪽 순서대로 단축키 지정
- 출력 함수
3. first_shortcut 함수 부분 구현
- state 상태를 표현하는 변수를 선언하고 조건에 만족 못하는 경우 sequence_shorcut 함수 실행
- 입력받은 문자열을 반복문으로 돌린다.
- 첫 번째 위치의 단어가 shortcut 리스트에 없는 경우 조건문 실행
- 해당 단어 shortcut 리스트에 넣어주기
- print_shortcut 함수 실행
4. print_shortcut 함수 부분 구현
- str_lst, i (몇 번째 문자열), k (몇 번째 문자) 를 매개 변수로 받음
- str_lst[i] 문자를 수정하고 전체 출력
5. sequence_shortcut 함수 부분 구현
- state 상태를 표현하는 변수 선언 후 조건 만족하지 못 할 경우 단어 전체 출력
- 조건에 만족하는 경우 i,k 를 print_shortcut 함수에 전달
📌 문제 코멘트
쉬운 문제인 줄 알았는데, 많은 시간을 들였다 ...
빡구현은 답을 봐도 크게 도움이 되지 않는다 ㅠㅠ
그래도 확실한 것은 이런 빡구현 문제는 무조건 쪼개서 풀어야 한다는 것 !!
📚문제
한글 프로그램의 메뉴에는 총 N개의 옵션이 있다. 각 옵션들은 한 개 또는 여러 개의 단어로 옵션의 기능을 설명하여 놓았다. 그리고 우리는 위에서부터 차례대로 각 옵션에 단축키를 의미하는 대표 알파벳을 지정하기로 하였다. 단축키를 지정하는 법은 아래의 순서를 따른다.
- 먼저 하나의 옵션에 대해 왼쪽에서부터 오른쪽 순서로 단어의 첫 글자가 이미 단축키로 지정되었는지 살펴본다. 만약 단축키로 아직 지정이 안 되어있다면 그 알파벳을 단축키로 지정한다.
- 만약 모든 단어의 첫 글자가 이미 지정이 되어있다면 왼쪽에서부터 차례대로 알파벳을 보면서 단축키로 지정 안 된 것이 있다면 단축키로 지정한다.
- 어떠한 것도 단축키로 지정할 수 없다면 그냥 놔두며 대소문자를 구분치 않는다.
- 위의 규칙을 첫 번째 옵션부터 N번째 옵션까지 차례대로 적용한다.
입력
첫째 줄에 옵션의 개수 N(1 ≤ N ≤ 30)이 주어진다. 둘째 줄부터 N+1번째 줄까지 각 줄에 옵션을 나타내는 문자열이 입력되는데 하나의 옵션은 5개 이하의 단어로 표현되며, 각 단어 역시 10개 이하의 알파벳으로 표현된다. 단어는 공백 한 칸으로 구분되어져 있다.
출력
N개의 줄에 각 옵션을 출력하는데 단축키로 지정된 알파벳은 좌우에 [] 괄호를 씌워서 표현한다.
예제 입력 1 복사
5
New
Open
Save
Save As
Save All
예제 출력 1 복사
[N]ew
[O]pen
[S]ave
Save [A]s
Sa[v]e All
예제 입력 2 복사
8
New window
New file
Copy
Undo
Format
Font
Cut
Paste
예제 출력 2 복사
[N]ew window
New [f]ile
[C]opy
[U]ndo
F[o]rmat
Fon[t]
Cut
[P]aste
'알고리즘 > 알고리즘_백준' 카테고리의 다른 글
[Python][백준] 20437. 문자열 게임 2 / 문자열 (G5) (0) | 2024.10.26 |
---|---|
[Python][백준] 13144. List of Unique Numbers / 투포인터 (G4) (1) | 2024.10.19 |
[Python][백준] 14891. 톱니바퀴 / 시뮬레이션,구현 (G5) (0) | 2024.10.14 |
[Python][백준] 12865. 1로 만들기 2 / DP (S1) (0) | 2024.10.08 |
[Python][백준] 12865. 평범한 배낭 / DP, 배낭 문제 (G5) (1) | 2024.10.04 |