반응형
Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Archives
Today
Total
관리 메뉴
조금씩 꾸준하게
[백준] 16719번 - ZOAC (Python, 파이썬) 본문
ProblemSolving/BOJ

[백준] 16719번 - ZOAC (Python, 파이썬)

적절 2023. 1. 6.
반응형

문제

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

 

16719번: ZOAC

2018년 12월, 처음 시작하게 된 ZOAC의 오프닝을 맡은 성우는 누구보다 화려하게 ZOAC를 알리려 한다. 앞 글자부터 하나씩 보여주는 방식은 너무 식상하다고 생각한 성우는 문자열을 보여주는 새로

www.acmicpc.net

 

접근 방법

주어지는 문자열의 길이가 최대 100까지밖에 안되므로, 모든 경우의 수를 다 세는 방식으로 풀이하였다.

현재 문자 상태에서 추가하지 않은 각 문자 하나하나에 대하여 추가해서 후보군을 추리고,

그중에서 문자열이 가장 앞서는 걸 택하고 이를 반복한다.

 

상세

나는 문자열 target과 각 문자에 대한 선택 여부를 isActivate배열 2개를 두어 풀이하였다.

 

ZOAC를 예시로 들어보자. A → AC → OAC → ZOAC 순으로 선택해야 한다.

 

1단계

현재 문자열: _ _ _ _

현재 선택되지 않은 Z, O, A, C 각각에 대하여 선택한 경우를 후보군에 넣는다.

Z, O, A, C A가 사전상 가장 앞서므로 A를 선택한다.

 

2단계

현재 문자열: _ _ A _

현재 선택되지 않은 Z, O, C 각각에 대하여 선택한 경우를 후보군에 넣는다.

ZA, OA, AC AC가 사전상 가장 앞서므로 C를 선택한다.

 

3단계

현재문자열: _ _ A C

현재 선택되지 않은 Z, O 각각에 대하여 선택한 경우를 후보군에 넣는다.

ZAC, OAC OAC가 사전상 가장 앞서므로 O를 선택한다.

 

4단계

현재 문자열: _ O A C

현재 선택되지 않은 Z 각각에 대하여 선택한 경우를 후보군에 넣는다.

ZOAC 중 ZOAC가 사전상 가장 앞서므로 Z를 선택한다.

 

코드

# ex. showActivateStr("CAT", [True, True, False])는 True에 해당하는 문자인 "CA"를 반환함
def showActivateStr(target, isActivate):
    result = ""
    for i in range(len(isActivate)):
        if isActivate[i]:
            result += target[i]
    return result

target = input()
isActivate = [False] * len(target)

for i in range(len(target)):
    # isActivate값이 False인것 하나하나에 대해서 추가했을 때의 가능한 문자열들을 모아놓고 가장 앞서는 경우를 확인
    tempResult = [] # (문자열, 그때 활성화 시킨 인덱스)
    
    for j in range(len(isActivate)):
        if isActivate[j] == False:
            isActivate[j] = True
            tempResult.append((showActivateStr(target, isActivate), j))
            isActivate[j] = False
    
    tempResult.sort() # tempResult의 가장 앞에는 (가장 앞서는 문자열, 그때 활성화 시킨 인덱스)가 될 것임
    print(tempResult[0][0])
    isActivate[tempResult[0][1]] = True

 

풀이 정보

시도 횟수: 1회

총 문제 풀이에 걸린 시간: 14분 39초

 

 

반응형
Comments