알고리즘 공부/백준

(Python)백준 코딩테스트 연습 - 단축키 지정(1283)

HRuler 2023. 4. 25. 12:41

1. 문제

https://www.acmicpc.net/problem/1283

 

1283번: 단축키 지정

첫째 줄에 옵션의 개수 N(1 ≤ N ≤ 30)이 주어진다. 둘째 줄부터 N+1번째 줄까지 각 줄에 옵션을 나타내는 문자열이 입력되는데 하나의 옵션은 5개 이하의 단어로 표현되며, 각 단어 역시 10개 이하

www.acmicpc.net

2. 풀이

import sys
input = sys.stdin.readline

# n : 옵션 개수
n = int(input().strip())

# nBoolList : 옵션 존재 여부를 확인할 리스트
nBoolList = [False for i in range(26)]

# nList : 옵션 리스트
nList = []
for i in range(n):
    nList.append(input().strip())

for k, i in enumerate(nList):
    
    optionAppend = False
    newOptionName = ""
    
    wordList = i.split(" ")
    for j in wordList:
        if optionAppend == False:
            alpha = j[0].upper()
            if nBoolList[ord(alpha) - 65] == False:
                optionAppend = True
                newOptionName += "[" + j[0] + "]" + j[1:] + " "
                nBoolList[ord(alpha) - 65] = True
            else:
                newOptionName += (j + " ")
        else:
            newOptionName += (j + " ")
            
    if optionAppend == False:
        newOptionName = ""
        for j in i:
            if j == " ":
                newOptionName += j
            else:
                if optionAppend == False:
                    alpha = j.upper()
                    if nBoolList[ord(alpha) - 65] == False:
                        optionAppend = True
                        newOptionName += "[" + j + "]"
                        nBoolList[ord(alpha) - 65] = True
                    else:
                        newOptionName += j
                else:
                    newOptionName += j
#     print(nBoolList)
    nList[k] = newOptionName.strip()
for i in nList:
    print(i)