업데이트:

카테고리: ,

1. 문제

문제는 링크에 들어가면 있다.

2. 정답 코드

문제의 내 정답 코드는 다음과 같다.

def solution():

    input_list = list(input().split())

    # 하나씩 확인하면서, X인 부분들을 찾는 느낌.
    save_space = []
    result_list = []
    count = 0
    for idx,t in enumerate(input_list[0]) :
        # . 를 만나면 어떤 작업을 하자.
        if t == '.' :
            
            result = []
            if count % 2 == 1 :
                return -1
            # 사전순으로 빠르게 배열해야하니 A가 무조건 앞에 와야댐.
            # 그럴려면 count가 4로 나눴을 때 몫이 존재해야함.
            # 그만큼 AAAA를 넣어주면 됨.
            if count > 0 :
                four = count//4
                two = (count-four*4)//2
                four_list = ['AAAA' for _ in range(four)]
                two_list = ['BB' for _ in range(two)]

                result.append(''.join(four_list))
                result.append(''.join(two_list))
            result.append('.')
            result_list.append(''.join(result))
            count = -1
        count+=1

        if idx == len(input_list[0])-1 :

            result = []
            if count % 2 == 1 :
                return -1
            # 마지막에 .을 못만나고 끝날수도. 그럼 그땐 이렇게
            four = count//4
            two = (count-four*4)//2
            four_list = ['AAAA' for _ in range(four)]
            two_list = ['BB' for _ in range(two)]

            result.append(''.join(four_list))
            result.append(''.join(two_list))
            result_list.append(''.join(result))
    last_result = ''.join(result_list)
    return last_result
print(solution())




3. 풀이 및 생각


문제 풀이

이 문제의 핵심은 X의 개수가 4로 먼저 나눠지는지, 그리고 남은 숫자가 2로 나눌 수 있는지 파악하기, .을 만났을 때 문제 처리를 어떻게 할 것인지이다.

나 같은 경우엔 X의 개수를 세면서 반복문을 진행하다가, .을 만나거나 끝났을 때 count의 개수가 홀수면 -1을 반환했다. 아닐 경우, X의 개수에 따라 AAAA와 BB를 배치했다.


나의 생각

이 문제 자체는 그렇게 어려운 문제가 아니지만 약간의 구현 문제 비슷했다. 당황하지 않고 조건을 잘 따진다면 쉽게 풀 수 있는 문제다.

1 분 소요