CodingTest/Baekjoon

[baekjoon] 백준 1283번(파이썬): 단축키 지정

JunJangE 2022. 3. 21. 15:06

문제

 

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